From 65503d92f47b900270a8f18e5bdb2428b4b5d9f9 Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Mon, 4 Oct 2021 13:17:08 +0200
Subject: [PATCH 01/18] Change icon order
---
MonitorControl/Info.plist | 2 +-
MonitorControl/Support/MenuHandler.swift | 6 +++---
MonitorControlHelper/Info.plist | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index 807ef49d..dfebba5a 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6390
+ 6395
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/Support/MenuHandler.swift b/MonitorControl/Support/MenuHandler.swift
index 8f0784d0..61b10f29 100644
--- a/MonitorControl/Support/MenuHandler.swift
+++ b/MonitorControl/Support/MenuHandler.swift
@@ -226,7 +226,7 @@ class MenuHandler: NSMenu, NSMenuDelegate {
preferencesIcon.image = NSImage(systemSymbolName: "gearshape", accessibilityDescription: NSLocalizedString("Preferences...", comment: "Shown in menu"))
preferencesIcon.alternateImage = NSImage(systemSymbolName: "gearshape.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.frame = NSRect(x: menuItemView.frame.maxX - iconSize * 3 - 30 - 16 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize)
preferencesIcon.imageScaling = .scaleProportionallyUpOrDown
preferencesIcon.action = #selector(app.prefsClicked)
@@ -239,7 +239,7 @@ class MenuHandler: NSMenu, NSMenuDelegate {
updateIcon.alternateImage = NSImage(systemSymbolName: symbolName + ".fill", accessibilityDescription: NSLocalizedString("Check for updates...", comment: "Shown in menu"))
updateIcon.alphaValue = 0.3
- updateIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize * 2 - 20 - 16 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize)
+ 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
@@ -252,7 +252,7 @@ class MenuHandler: NSMenu, NSMenuDelegate {
quitIcon.image = NSImage(systemSymbolName: symbolName, accessibilityDescription: NSLocalizedString("Quit", comment: "Shown in menu"))
quitIcon.alternateImage = NSImage(systemSymbolName: symbolName + ".fill", accessibilityDescription: NSLocalizedString("Quit", comment: "Shown in menu"))
quitIcon.alphaValue = 0.3
- quitIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize * 3 - 30 - 16 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize)
+ quitIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize - 16 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize)
quitIcon.imageScaling = .scaleProportionallyUpOrDown
quitIcon.action = #selector(app.quitClicked)
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index 46082b58..380aad3d 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6390
+ 6395
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From b3c22e56c58cab95de9e3271a4c45561aea5c2df Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Mon, 4 Oct 2021 18:26:55 +0200
Subject: [PATCH 02/18] Added option for minimum brightness, fixed text for
external display brightness control (+ updated all translations)
---
MonitorControl.xcodeproj/project.pbxproj | 16 ++---
MonitorControl/Enums/PrefKey.swift | 3 +
MonitorControl/Info.plist | 2 +-
MonitorControl/Model/Display.swift | 7 +-
MonitorControl/Model/OtherDisplay.swift | 9 ++-
MonitorControl/UI/Base.lproj/Main.storyboard | 68 +++++++++++++------
MonitorControl/UI/de.lproj/Main.strings | 10 ++-
MonitorControl/UI/en.lproj/Main.strings | 10 ++-
MonitorControl/UI/es-419.lproj/Main.strings | 10 ++-
MonitorControl/UI/fr.lproj/Main.strings | 10 ++-
MonitorControl/UI/hu.lproj/Main.strings | 10 ++-
MonitorControl/UI/it.lproj/Main.strings | 10 ++-
MonitorControl/UI/ja.lproj/Main.strings | 10 ++-
MonitorControl/UI/ko.lproj/Main.strings | 10 ++-
MonitorControl/UI/nl.lproj/Main.strings | 10 ++-
MonitorControl/UI/pl.lproj/Main.strings | 10 ++-
MonitorControl/UI/ru.lproj/Main.strings | 10 ++-
MonitorControl/UI/tr.lproj/Main.strings | 10 ++-
MonitorControl/UI/uk.lproj/Main.strings | 10 ++-
MonitorControl/UI/zh-Hans.lproj/Main.strings | 10 ++-
.../UI/zh-Hant-TW.lproj/Main.strings | 10 ++-
.../MainPrefsViewController.swift | 33 ++++++++-
MonitorControlHelper/Info.plist | 2 +-
23 files changed, 224 insertions(+), 66 deletions(-)
diff --git a/MonitorControl.xcodeproj/project.pbxproj b/MonitorControl.xcodeproj/project.pbxproj
index bfca5703..29613a9c 100644
--- a/MonitorControl.xcodeproj/project.pbxproj
+++ b/MonitorControl.xcodeproj/project.pbxproj
@@ -771,11 +771,11 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = MonitorControl/MonitorControlDebug.entitlements;
- CODE_SIGN_IDENTITY = "-";
+ CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1179;
- DEVELOPMENT_TEAM = "";
+ DEVELOPMENT_TEAM = 53RQTTY9DR;
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(PROJECT_DIR)/**",
@@ -806,11 +806,11 @@
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CODE_SIGN_IDENTITY = "-";
+ CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1179;
- DEVELOPMENT_TEAM = "";
+ DEVELOPMENT_TEAM = 53RQTTY9DR;
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(PROJECT_DIR)/**",
@@ -844,11 +844,11 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = MonitorControlHelper/MonitorControlHelper.entitlements;
- CODE_SIGN_IDENTITY = "-";
+ CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 631;
- DEVELOPMENT_TEAM = "";
+ DEVELOPMENT_TEAM = 53RQTTY9DR;
ENABLE_HARDENED_RUNTIME = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = MonitorControlHelper/Info.plist;
@@ -873,11 +873,11 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = MonitorControlHelper/MonitorControlHelper.entitlements;
- CODE_SIGN_IDENTITY = "-";
+ CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 631;
- DEVELOPMENT_TEAM = "";
+ DEVELOPMENT_TEAM = 53RQTTY9DR;
ENABLE_HARDENED_RUNTIME = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = MonitorControlHelper/Info.plist;
diff --git a/MonitorControl/Enums/PrefKey.swift b/MonitorControl/Enums/PrefKey.swift
index efcb9b21..46d03273 100644
--- a/MonitorControl/Enums/PrefKey.swift
+++ b/MonitorControl/Enums/PrefKey.swift
@@ -127,6 +127,9 @@ enum PrefKey: String {
// Change Brightness for all screens
case allScreensBrightness
+ // Allow zero software brightness
+ case allowZeroSwBrightness
+
// Use focus instead of mouse position to determine which display to control for brightness
case useFocusInsteadOfMouse
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index dfebba5a..3cc9197e 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6395
+ 6403
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/Model/Display.swift b/MonitorControl/Model/Display.swift
index b157312d..b79f7d99 100644
--- a/MonitorControl/Model/Display.swift
+++ b/MonitorControl/Model/Display.swift
@@ -191,7 +191,7 @@ class Display: Equatable {
}
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)
+ let lowTreshold: Float = prefs.bool(forKey: PrefKey.allowZeroSwBrightness.rawValue) ? 0.0 : 0.15
if !reverse {
return value * (1 - lowTreshold) + lowTreshold
} else {
@@ -228,7 +228,7 @@ class Display: Equatable {
}
} else {
if self.isVirtual {
- return DisplayManager.shared.setShadeAlpha(value: 1 - value, displayID: self.identifier)
+ return DisplayManager.shared.setShadeAlpha(value: 1 - newValue, displayID: self.identifier)
} else {
let gammaTableRed = self.defaultGammaTableRed.map { $0 * newValue }
let gammaTableGreen = self.defaultGammaTableGreen.map { $0 * newValue }
@@ -243,7 +243,8 @@ class Display: Equatable {
func getSwBrightness() -> Float {
if self.isVirtual {
- return 1 - (DisplayManager.shared.getShadeAlpha(displayID: self.identifier) ?? 1)
+ let rawBrightnessValue = 1 - (DisplayManager.shared.getShadeAlpha(displayID: self.identifier) ?? 1)
+ return self.swBrightnessTransform(value: rawBrightnessValue, reverse: true)
}
var gammaTableRed = [CGGammaValue](repeating: 0, count: 256)
var gammaTableGreen = [CGGammaValue](repeating: 0, count: 256)
diff --git a/MonitorControl/Model/OtherDisplay.swift b/MonitorControl/Model/OtherDisplay.swift
index dd5a1901..1222c309 100644
--- a/MonitorControl/Model/OtherDisplay.swift
+++ b/MonitorControl/Model/OtherDisplay.swift
@@ -76,7 +76,12 @@ class OtherDisplay: Display {
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)
+ var currentDDCValue: UInt16
+ switch command {
+ case .audioSpeakerVolume: currentDDCValue = UInt16(Float(self.DDC_MAX_DETECT_LIMIT) * 0.125)
+ case .contrast: currentDDCValue = UInt16(Float(self.DDC_MAX_DETECT_LIMIT) * 0.750)
+ default: currentDDCValue = UInt16(Float(self.DDC_MAX_DETECT_LIMIT) * 1.000)
+ }
if command == .audioSpeakerVolume {
currentDDCValue = UInt16(Float(self.DDC_MAX_DETECT_LIMIT) * 0.125) // lower default audio value as high volume might rattle the user.
}
@@ -114,7 +119,7 @@ class OtherDisplay: Display {
_ = 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.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)
diff --git a/MonitorControl/UI/Base.lproj/Main.storyboard b/MonitorControl/UI/Base.lproj/Main.storyboard
index d4668d9f..00bbb264 100644
--- a/MonitorControl/UI/Base.lproj/Main.storyboard
+++ b/MonitorControl/UI/Base.lproj/Main.storyboard
@@ -11,10 +11,10 @@
-
+
-
+
@@ -27,6 +27,8 @@
+
+
@@ -47,7 +49,7 @@
-
+
@@ -57,7 +59,7 @@
+
@@ -364,6 +392,8 @@
+
+
@@ -382,7 +412,7 @@
-
+
@@ -902,7 +932,7 @@
- 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.
+ Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays.
@@ -1393,7 +1423,7 @@
-
+
@@ -1412,7 +1442,7 @@
-
+
diff --git a/MonitorControl/UI/de.lproj/Main.strings b/MonitorControl/UI/de.lproj/Main.strings
index 42eb6df5..dac72ac2 100644
--- a/MonitorControl/UI/de.lproj/Main.strings
+++ b/MonitorControl/UI/de.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Lautstärke:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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 und eingebaute Monitore verfügen bereits über einen Helligkeitsregler im Kontrollzentrum.";
@@ -259,8 +262,8 @@
/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */
"Orv-yj-Nad.title" = "zählen:";
-/* 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" = "Verwenden Sie die Helligkeitstasten Ihrer Apple-Tastatur, um die Helligkeit zu steuern. Halten Sie die Steuerungstaste gedrückt, um den eingebauten Monitor zu steuern, und halten Sie die Tastenkombination Steuerung+Option gedrückt, um externe Monitore zu steuern. Halten Sie Shift+Option für die Feinsteuerung. Steuerung+Option+Befehl stellt den Kontrast auf DDC-kompatiblen Monitoren ein.";
+/* 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+Command 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" = "Verwenden Sie die Helligkeitstasten Ihrer Apple-Tastatur, um die Helligkeit zu steuern. Halten Sie die Steuerungstaste gedrückt, um den eingebauten Monitor zu steuern, und halten Sie die Tastenkombination Steuerung+Befehl gedrückt, um externe Monitore zu steuern. Halten Sie Shift+Option für die Feinsteuerung. Steuerung+Option+Befehl stellt den Kontrast auf DDC-kompatiblen Monitoren ein.";
/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */
"PaK-1f-DsW.title" = "Steuerung:";
@@ -376,6 +379,9 @@
/* 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" = "Für die Steuerung der Hardware-Helligkeit steht die volle OSD-Skala zur Verfügung, und nach Erreichen der Helligkeit 0 erfolgt eine weitere Software-Dimmung.";
+/* Class = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */
"yn8-Nd-o89.title" = "Annehmen, dass die zuletzt gespeicherten Einstellungen gültig sind (empfohlen)";
diff --git a/MonitorControl/UI/en.lproj/Main.strings b/MonitorControl/UI/en.lproj/Main.strings
index 074b4c02..5c397aac 100644
--- a/MonitorControl/UI/en.lproj/Main.strings
+++ b/MonitorControl/UI/en.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volume:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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.";
@@ -259,8 +262,8 @@
/* 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 = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command 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+Command 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:";
@@ -376,6 +379,9 @@
/* 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 = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* 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)";
diff --git a/MonitorControl/UI/es-419.lproj/Main.strings b/MonitorControl/UI/es-419.lproj/Main.strings
index 7256f1f8..c26a56f2 100644
--- a/MonitorControl/UI/es-419.lproj/Main.strings
+++ b/MonitorControl/UI/es-419.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volume:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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.";
@@ -259,8 +262,8 @@
/* 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 = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command 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+Command 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:";
@@ -376,6 +379,9 @@
/* 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 = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* 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)";
diff --git a/MonitorControl/UI/fr.lproj/Main.strings b/MonitorControl/UI/fr.lproj/Main.strings
index 2a8bece7..98995f2b 100644
--- a/MonitorControl/UI/fr.lproj/Main.strings
+++ b/MonitorControl/UI/fr.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volume :";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */
"fmZ-HI-Mdc.title" = "Les écrans Apple et intégrés ont déjà un curseur de luminosité dans le Centre de Contrôle.";
@@ -259,8 +262,8 @@
/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */
"Orv-yj-Nad.title" = "nb. de tentative :";
-/* 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" = "Utilisez les touches de luminosité de votre clavier Apple pour contrôler la luminosité. Vous pouvez maintenir Control pour ajuster l'affichage intégré, Control+Option pour ajuster les affichages externes. Maintenez Maj+Option pour un contrôle précis. Contrôle+Option+Command ajuste le contraste sur les écrans compatibles DDC.";
+/* 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+Command 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" = "Utilisez les touches de luminosité de votre clavier Apple pour contrôler la luminosité. Vous pouvez maintenir Control pour ajuster l'affichage intégré, Control+Command pour ajuster les affichages externes. Maintenez Maj+Option pour un contrôle précis. Contrôle+Option+Command ajuste le contraste sur les écrans compatibles DDC.";
/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */
"PaK-1f-DsW.title" = "Méthode de contrôle :";
@@ -376,6 +379,9 @@
/* 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" = "L'échelle de l'OSD complète sera disponible pour le contrôle de la luminosité matériel et après avoir atteint une luminosité de 0, un contrôle logiciel supplémentaire sera utilisée.";
+/* Class = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */
"yn8-Nd-o89.title" = "Supposer que les derniers paramètres enregistrés sont valides (recommandé)";
diff --git a/MonitorControl/UI/hu.lproj/Main.strings b/MonitorControl/UI/hu.lproj/Main.strings
index cac61da6..0c415c90 100644
--- a/MonitorControl/UI/hu.lproj/Main.strings
+++ b/MonitorControl/UI/hu.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Hangerő:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Teljes fekete engedélyezése szoftveres vagy kombinált sötétítéskor";
+
/* 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";
@@ -259,8 +262,8 @@
/* 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 = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command 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+Command 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:";
@@ -376,6 +379,9 @@
/* 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 = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* 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)";
diff --git a/MonitorControl/UI/it.lproj/Main.strings b/MonitorControl/UI/it.lproj/Main.strings
index 9b4b92fc..4042e600 100644
--- a/MonitorControl/UI/it.lproj/Main.strings
+++ b/MonitorControl/UI/it.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volume:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */
"fmZ-HI-Mdc.title" = "I Monitor Apple ed incorporati hanno già lo slider della luminosità nel Centro di Controllo.";
@@ -259,8 +262,8 @@
/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */
"Orv-yj-Nad.title" = "conteggio:";
-/* 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" = "Utilizza il tasto luminosità della tua tastiera Apple per controllare la luminosità. Puoi premere Control per il monitor incorporato, Control-Alt per i monitor esterni. Premi Maiusc+Alt per un controlllo fine. Control+Alt+Command modifica il contrasto sui monitor compatibili DDC.";
+/* 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+Command 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" = "Utilizza il tasto luminosità della tua tastiera Apple per controllare la luminosità. Puoi premere Control per il monitor incorporato, Control-Command per i monitor esterni. Premi Maiusc+Alt per un controlllo fine. Control+Alt+Command modifica il contrasto sui monitor compatibili DDC.";
/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */
"PaK-1f-DsW.title" = "Metodo di controllo:";
@@ -376,6 +379,9 @@
/* 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" = "L'intera scala OSD sarà disponibile per il controllo hardware della luminosità e una volta raggiunto lo 0, l'attenuazione software verrà utilizata.";
+/* Class = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */
"yn8-Nd-o89.title" = "Assumi che le ultime impostazioni siano valide (raccomandato)";
diff --git a/MonitorControl/UI/ja.lproj/Main.strings b/MonitorControl/UI/ja.lproj/Main.strings
index 049912aa..0050f475 100644
--- a/MonitorControl/UI/ja.lproj/Main.strings
+++ b/MonitorControl/UI/ja.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volume:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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.";
@@ -259,8 +262,8 @@
/* 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 = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command 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+Command 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:";
@@ -376,6 +379,9 @@
/* 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 = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* 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)";
diff --git a/MonitorControl/UI/ko.lproj/Main.strings b/MonitorControl/UI/ko.lproj/Main.strings
index ac1339ce..c5d596b5 100644
--- a/MonitorControl/UI/ko.lproj/Main.strings
+++ b/MonitorControl/UI/ko.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "볼륨:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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 및 내장 디스플레이에는 이미 제어 센터에 밝기 슬라이더가 있습니다.";
@@ -259,8 +262,8 @@
/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */
"Orv-yj-Nad.title" = "횟수:";
-/* 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 = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command 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+Command 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" = "제어 방식:";
@@ -376,6 +379,9 @@
/* 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" = "하드웨어 밝기 제어를 위해 전체 OSD 스케일을 사용할 수 있으며, 밝기가 0에 도달하면 추가적으로 소프트웨어 밝기 조절을 사용합니다.";
+/* Class = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */
"yn8-Nd-o89.title" = "마지막으로 저장한 설정이 유효하다고 가정 (권장)";
diff --git a/MonitorControl/UI/nl.lproj/Main.strings b/MonitorControl/UI/nl.lproj/Main.strings
index 0c42e26b..c6a02151 100644
--- a/MonitorControl/UI/nl.lproj/Main.strings
+++ b/MonitorControl/UI/nl.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volume:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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 en ingebouwde schermen hebben reeds een schuifregelaar voor helderheid in het Control Center.";
@@ -259,8 +262,8 @@
/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */
"Orv-yj-Nad.title" = "aantal:";
-/* 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" = "Gebruik de helderheidstoetsen van uw Apple toetsenbord om de helderheid te regelen. U kunt Control ingedrukt houden om het ingebouwde scherm aan te passen, Control+Option om externe schermen aan te passen. Gebruik Shift+Option voor fijne controle. Control+Option+Command past het contrast aan op DDC-compatibele schermen.";
+/* 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+Command 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" = "Gebruik de helderheidstoetsen van uw Apple toetsenbord om de helderheid te regelen. U kunt Control ingedrukt houden om het ingebouwde scherm aan te passen, Control+Command om externe schermen aan te passen. Gebruik Shift+Option voor fijne controle. Control+Option+Command past het contrast aan op DDC-compatibele schermen.";
/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */
"PaK-1f-DsW.title" = "Besturingsmethode:";
@@ -376,6 +379,9 @@
/* 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" = "Volledige OSD-schaal zal beschikbaar zijn voor hardwarehelderheidsregeling en na het bereiken van 0 helderheid, zal softwarematig verder gedimd worden.";
+/* Class = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */
"yn8-Nd-o89.title" = "Veronderstel dat de laatst bewaarde instellingen geldig zijn (aanbevolen)";
diff --git a/MonitorControl/UI/pl.lproj/Main.strings b/MonitorControl/UI/pl.lproj/Main.strings
index 0feab8b1..36ae7b3b 100644
--- a/MonitorControl/UI/pl.lproj/Main.strings
+++ b/MonitorControl/UI/pl.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volume:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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.";
@@ -259,8 +262,8 @@
/* 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 = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command 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+Command 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:";
@@ -376,6 +379,9 @@
/* 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 = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* 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)";
diff --git a/MonitorControl/UI/ru.lproj/Main.strings b/MonitorControl/UI/ru.lproj/Main.strings
index 78200be0..fdc92eea 100644
--- a/MonitorControl/UI/ru.lproj/Main.strings
+++ b/MonitorControl/UI/ru.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volume:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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.";
@@ -259,8 +262,8 @@
/* 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 = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command 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+Command 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" = "Метод управления:";
@@ -376,6 +379,9 @@
/* 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 = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* 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)";
diff --git a/MonitorControl/UI/tr.lproj/Main.strings b/MonitorControl/UI/tr.lproj/Main.strings
index 085720c7..10ce2823 100644
--- a/MonitorControl/UI/tr.lproj/Main.strings
+++ b/MonitorControl/UI/tr.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Ses:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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 ve yerleşik ekranların Denetim Merkezi'nde zaten bir parlaklık kaydırıcısı vardır.";
@@ -259,8 +262,8 @@
/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */
"Orv-yj-Nad.title" = "Sayı:";
-/* 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" = "Parlaklığı kontrol etmek için Apple klavyenizin parlaklık tuşlarını kullanın. Dahili ekranı ayarlamak için Control tuşunu, harici ekranları ayarlamak için Control+Option tuşunu basılı tutabilirsiniz. Hassas kontrol için Shift+Option tuşunu basılı tutun. Control+Option+Command, DDC uyumlu ekranlarda kontrastı ayarlar.";
+/* 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+Command 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" = "Parlaklığı kontrol etmek için Apple klavyenizin parlaklık tuşlarını kullanın. Dahili ekranı ayarlamak için Control tuşunu, harici ekranları ayarlamak için Control+Command tuşunu basılı tutabilirsiniz. Hassas kontrol için Shift+Option tuşunu basılı tutun. Control+Option+Command, DDC uyumlu ekranlarda kontrastı ayarlar.";
/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */
"PaK-1f-DsW.title" = "Kontrol yöntemi:";
@@ -376,6 +379,9 @@
/* 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" = "Donanım parlaklık kontrolü için tam OSD ölçeği mevcut olacak ve 0 parlaklığa ulaştıktan sonra daha fazla yazılım karartması kullanılacak.";
+/* Class = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */
"yn8-Nd-o89.title" = "Son kaydedilen ayarların geçerli olduğunu varsayın (önerilir)";
diff --git a/MonitorControl/UI/uk.lproj/Main.strings b/MonitorControl/UI/uk.lproj/Main.strings
index 49ddf1be..23b87718 100644
--- a/MonitorControl/UI/uk.lproj/Main.strings
+++ b/MonitorControl/UI/uk.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volume:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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.";
@@ -259,8 +262,8 @@
/* 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 = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command 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+Command 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:";
@@ -376,6 +379,9 @@
/* 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 = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* 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)";
diff --git a/MonitorControl/UI/zh-Hans.lproj/Main.strings b/MonitorControl/UI/zh-Hans.lproj/Main.strings
index 75a1ed98..6b999829 100644
--- a/MonitorControl/UI/zh-Hans.lproj/Main.strings
+++ b/MonitorControl/UI/zh-Hans.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volume:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* 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.";
@@ -259,8 +262,8 @@
/* 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 = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command 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+Command 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" = "控制方法:";
@@ -376,6 +379,9 @@
/* 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 = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* 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)";
diff --git a/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings b/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings
index 36845f51..a8ec5969 100644
--- a/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings
+++ b/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings
@@ -145,6 +145,9 @@
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "音量:";
+/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
+"FjB-XL-fG5.title" = "Allow zero brightness via software or combined dimming";
+
/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */
"fmZ-HI-Mdc.title" = "控制中心中已有蘋果及內建螢幕的亮度控制滑桿。";
@@ -259,8 +262,8 @@
/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */
"Orv-yj-Nad.title" = "數量:";
-/* 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" = "使用蘋果鍵盤上的亮度控制按鈕來調整亮度。搭配Control鍵調整內建螢幕、Control+Option調整外接螢幕、Shift+Option進行精細調整、Control+Option+Command調整DDC相容螢幕的對比度。";
+/* 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+Command 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" = "使用蘋果鍵盤上的亮度控制按鈕來調整亮度。搭配Control鍵調整內建螢幕、Control+Command調整外接螢幕、Shift+Option進行精細調整、Control+Option+Command調整DDC相容螢幕的對比度。";
/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */
"PaK-1f-DsW.title" = "控制方式:";
@@ -376,6 +379,9 @@
/* 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" = "完整的OSD刻度只涵蓋硬體的控制範圍,刻度在0以下時以軟體調整。";
+/* Class = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
+"yi3-e1-wsL.title" = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating.";
+
/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */
"yn8-Nd-o89.title" = "假設前次的設定可用(建議)";
diff --git a/MonitorControl/View Controllers/MainPrefsViewController.swift b/MonitorControl/View Controllers/MainPrefsViewController.swift
index affbd788..2bfe8496 100644
--- a/MonitorControl/View Controllers/MainPrefsViewController.swift
+++ b/MonitorControl/View Controllers/MainPrefsViewController.swift
@@ -20,6 +20,7 @@ class MainPrefsViewController: NSViewController, PreferencePane {
@IBOutlet var startAtLogin: NSButton!
@IBOutlet var automaticUpdateCheck: NSButton!
@IBOutlet var disableSoftwareFallback: NSButton!
+ @IBOutlet var allowZeroSwBrightness: NSButton!
@IBOutlet var combinedBrightness: NSButton!
@IBOutlet var enableSmooth: NSButton!
@IBOutlet var enableBrightnessSync: NSButton!
@@ -38,6 +39,8 @@ class MainPrefsViewController: NSViewController, PreferencePane {
@IBOutlet var rowResetButton: NSGridRow!
@IBOutlet var rowDisableSoftwareFallbackCheck: NSGridRow!
@IBOutlet var rowDisableSoftwareFallbackText: NSGridRow!
+ @IBOutlet var rowAllowZeroSwBrightnessCheck: NSGridRow!
+ @IBOutlet var rowAllowZeroSwBrightnessText: NSGridRow!
func showAdvanced() -> Bool {
let hide = !prefs.bool(forKey: PrefKey.showAdvancedSettings.rawValue)
@@ -74,6 +77,13 @@ class MainPrefsViewController: NSViewController, PreferencePane {
self.rowDisableSoftwareFallbackCheck.isHidden = hide
self.rowDisableSoftwareFallbackText.isHidden = hide
}
+ if self.allowZeroSwBrightness.state == .on {
+ self.rowAllowZeroSwBrightnessCheck.isHidden = false
+ self.rowAllowZeroSwBrightnessText.isHidden = false
+ } else {
+ self.rowAllowZeroSwBrightnessCheck.isHidden = hide
+ self.rowAllowZeroSwBrightnessText.isHidden = hide
+ }
self.rowResetButton.isHidden = hide
return !hide
}
@@ -92,6 +102,7 @@ class MainPrefsViewController: NSViewController, PreferencePane {
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.allowZeroSwBrightness.state = prefs.bool(forKey: PrefKey.allowZeroSwBrightness.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
@@ -145,13 +156,31 @@ class MainPrefsViewController: NSViewController, PreferencePane {
switch sender.state {
case .on:
for display in DisplayManager.shared.getOtherDisplays() where display.isSw() {
- _ = display.setBrightness(1)
+ _ = display.setDirectBrightness(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)
+ _ = display.setDirectBrightness(1)
+ }
+ default: break
+ }
+ _ = self.showAdvanced()
+ app.configure()
+ }
+
+ @IBAction func allowZeroSwBrightness(_ sender: NSButton) {
+ switch sender.state {
+ case .on:
+ for display in DisplayManager.shared.getOtherDisplays() where display.isSw() {
+ _ = display.setDirectBrightness(1)
+ }
+ prefs.set(true, forKey: PrefKey.allowZeroSwBrightness.rawValue)
+ case .off:
+ prefs.set(false, forKey: PrefKey.allowZeroSwBrightness.rawValue)
+ for display in DisplayManager.shared.getOtherDisplays() where display.isSw() {
+ _ = display.setDirectBrightness(1)
}
default: break
}
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index 380aad3d..1ed59480 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6395
+ 6403
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From 10521b840fc7fd84e9ad97b47d610a97c1e44aae Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Mon, 4 Oct 2021 21:56:15 +0200
Subject: [PATCH 03/18] Fix cumulative darkening issue upon toggling Disable
dimming as fallback when software brightness is not 100%
---
MonitorControl/Info.plist | 2 +-
.../MainPrefsViewController.swift | 18 ++++++------------
MonitorControlHelper/Info.plist | 2 +-
3 files changed, 8 insertions(+), 14 deletions(-)
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index 3cc9197e..ab5814c8 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6403
+ 6409
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/View Controllers/MainPrefsViewController.swift b/MonitorControl/View Controllers/MainPrefsViewController.swift
index 2bfe8496..e943c3db 100644
--- a/MonitorControl/View Controllers/MainPrefsViewController.swift
+++ b/MonitorControl/View Controllers/MainPrefsViewController.swift
@@ -153,17 +153,14 @@ class MainPrefsViewController: NSViewController, PreferencePane {
}
@IBAction func disableSoftwareFallback(_ sender: NSButton) {
+ for display in DisplayManager.shared.getOtherDisplays() {
+ _ = display.setDirectBrightness(1)
+ }
switch sender.state {
case .on:
- for display in DisplayManager.shared.getOtherDisplays() where display.isSw() {
- _ = display.setDirectBrightness(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.setDirectBrightness(1)
- }
default: break
}
_ = self.showAdvanced()
@@ -171,17 +168,14 @@ class MainPrefsViewController: NSViewController, PreferencePane {
}
@IBAction func allowZeroSwBrightness(_ sender: NSButton) {
+ for display in DisplayManager.shared.getOtherDisplays() {
+ _ = display.setDirectBrightness(1)
+ }
switch sender.state {
case .on:
- for display in DisplayManager.shared.getOtherDisplays() where display.isSw() {
- _ = display.setDirectBrightness(1)
- }
prefs.set(true, forKey: PrefKey.allowZeroSwBrightness.rawValue)
case .off:
prefs.set(false, forKey: PrefKey.allowZeroSwBrightness.rawValue)
- for display in DisplayManager.shared.getOtherDisplays() where display.isSw() {
- _ = display.setDirectBrightness(1)
- }
default: break
}
_ = self.showAdvanced()
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index 1ed59480..ac16bcdc 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6403
+ 6409
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From 6ed09c9fe85f1fced203acd95c3266a63005ecf7 Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Mon, 4 Oct 2021 22:00:40 +0200
Subject: [PATCH 04/18] Further improvement.
---
MonitorControl/Info.plist | 2 +-
.../View Controllers/MainPrefsViewController.swift | 14 ++++++++------
MonitorControlHelper/Info.plist | 2 +-
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index ab5814c8..435201fa 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6409
+ 6410
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/View Controllers/MainPrefsViewController.swift b/MonitorControl/View Controllers/MainPrefsViewController.swift
index e943c3db..d15d01b6 100644
--- a/MonitorControl/View Controllers/MainPrefsViewController.swift
+++ b/MonitorControl/View Controllers/MainPrefsViewController.swift
@@ -153,9 +153,6 @@ class MainPrefsViewController: NSViewController, PreferencePane {
}
@IBAction func disableSoftwareFallback(_ sender: NSButton) {
- for display in DisplayManager.shared.getOtherDisplays() {
- _ = display.setDirectBrightness(1)
- }
switch sender.state {
case .on:
prefs.set(true, forKey: PrefKey.disableSoftwareFallback.rawValue)
@@ -163,14 +160,15 @@ class MainPrefsViewController: NSViewController, PreferencePane {
prefs.set(false, forKey: PrefKey.disableSoftwareFallback.rawValue)
default: break
}
+ for display in DisplayManager.shared.getOtherDisplays() {
+ _ = display.setDirectBrightness(1)
+ _ = display.setSwBrightness(1)
+ }
_ = self.showAdvanced()
app.configure()
}
@IBAction func allowZeroSwBrightness(_ sender: NSButton) {
- for display in DisplayManager.shared.getOtherDisplays() {
- _ = display.setDirectBrightness(1)
- }
switch sender.state {
case .on:
prefs.set(true, forKey: PrefKey.allowZeroSwBrightness.rawValue)
@@ -178,6 +176,10 @@ class MainPrefsViewController: NSViewController, PreferencePane {
prefs.set(false, forKey: PrefKey.allowZeroSwBrightness.rawValue)
default: break
}
+ for display in DisplayManager.shared.getOtherDisplays() {
+ _ = display.setDirectBrightness(1)
+ _ = display.setSwBrightness(1)
+ }
_ = self.showAdvanced()
app.configure()
}
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index ac16bcdc..0eee4df9 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6409
+ 6410
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From 4083388f638679d756db96c03d52b4c2febf1612 Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Mon, 4 Oct 2021 22:58:39 +0200
Subject: [PATCH 05/18] New 'Avoid gammatable manipulation' option for
coexistence with f.lux in software mode.
---
MonitorControl/Enums/PrefKey.swift | 3 +
MonitorControl/Info.plist | 2 +-
MonitorControl/Model/Display.swift | 6 +-
MonitorControl/UI/Base.lproj/Main.storyboard | 62 +++++++++++--------
.../UI/de.lproj/Localizable.strings | 6 ++
MonitorControl/UI/de.lproj/Main.strings | 3 +
.../UI/en.lproj/Localizable.strings | 6 ++
MonitorControl/UI/en.lproj/Main.strings | 3 +
.../UI/es-419.lproj/Localizable.strings | 6 ++
MonitorControl/UI/es-419.lproj/Main.strings | 3 +
.../UI/fr.lproj/Localizable.strings | 6 ++
MonitorControl/UI/fr.lproj/Main.strings | 3 +
.../UI/hu.lproj/Localizable.strings | 6 ++
MonitorControl/UI/hu.lproj/Main.strings | 3 +
.../UI/it.lproj/Localizable.strings | 6 ++
MonitorControl/UI/it.lproj/Main.strings | 3 +
.../UI/ja.lproj/Localizable.strings | 6 ++
MonitorControl/UI/ja.lproj/Main.strings | 3 +
.../UI/ko.lproj/Localizable.strings | 6 ++
MonitorControl/UI/ko.lproj/Main.strings | 3 +
.../UI/nl.lproj/Localizable.strings | 6 ++
MonitorControl/UI/nl.lproj/Main.strings | 3 +
.../UI/pl.lproj/Localizable.strings | 6 ++
MonitorControl/UI/pl.lproj/Main.strings | 3 +
.../UI/ru.lproj/Localizable.strings | 6 ++
MonitorControl/UI/ru.lproj/Main.strings | 3 +
.../UI/tr.lproj/Localizable.strings | 6 ++
MonitorControl/UI/tr.lproj/Main.strings | 3 +
.../UI/uk.lproj/Localizable.strings | 6 ++
MonitorControl/UI/uk.lproj/Main.strings | 3 +
.../UI/zh-Hans.lproj/Localizable.strings | 6 ++
MonitorControl/UI/zh-Hans.lproj/Main.strings | 3 +
.../UI/zh-Hant-TW.lproj/Localizable.strings | 6 ++
.../UI/zh-Hant-TW.lproj/Main.strings | 3 +
.../DisplaysPrefsCellView.swift | 27 ++++++--
.../DisplaysPrefsViewController.swift | 25 ++++++--
MonitorControlHelper/Info.plist | 2 +-
37 files changed, 221 insertions(+), 41 deletions(-)
diff --git a/MonitorControl/Enums/PrefKey.swift b/MonitorControl/Enums/PrefKey.swift
index 46d03273..bbb30ee0 100644
--- a/MonitorControl/Enums/PrefKey.swift
+++ b/MonitorControl/Enums/PrefKey.swift
@@ -22,6 +22,9 @@ enum PrefKey: String {
// DDC polling count for display
case pollingCount
+ // Display should avoid gammatable manipulation and use shades instead (to coexist with other apps doing gamma manipulation)
+ case avoidGamma
+
// Command value display
case value
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index 435201fa..970eeef9 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6410
+ 6418
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/Model/Display.swift b/MonitorControl/Model/Display.swift
index b79f7d99..e1d76591 100644
--- a/MonitorControl/Model/Display.swift
+++ b/MonitorControl/Model/Display.swift
@@ -214,7 +214,7 @@ class Display: Equatable {
guard app.reconfigureID == 0 else {
return
}
- if self.isVirtual {
+ if self.isVirtual || self.readPrefAsBool(key: .avoidGamma) {
_ = DisplayManager.shared.setShadeAlpha(value: 1 - transientValue, displayID: self.identifier)
} else {
let gammaTableRed = self.defaultGammaTableRed.map { $0 * transientValue }
@@ -227,7 +227,7 @@ class Display: Equatable {
self.swBrightnessSemaphore.signal()
}
} else {
- if self.isVirtual {
+ if self.isVirtual || self.readPrefAsBool(key: .avoidGamma) {
return DisplayManager.shared.setShadeAlpha(value: 1 - newValue, displayID: self.identifier)
} else {
let gammaTableRed = self.defaultGammaTableRed.map { $0 * newValue }
@@ -242,7 +242,7 @@ class Display: Equatable {
}
func getSwBrightness() -> Float {
- if self.isVirtual {
+ if self.isVirtual || self.readPrefAsBool(key: .avoidGamma) {
let rawBrightnessValue = 1 - (DisplayManager.shared.getShadeAlpha(displayID: self.identifier) ?? 1)
return self.swBrightnessTransform(value: rawBrightnessValue, reverse: true)
}
diff --git a/MonitorControl/UI/Base.lproj/Main.storyboard b/MonitorControl/UI/Base.lproj/Main.storyboard
index 00bbb264..bd4447b5 100644
--- a/MonitorControl/UI/Base.lproj/Main.storyboard
+++ b/MonitorControl/UI/Base.lproj/Main.storyboard
@@ -1414,16 +1414,16 @@
-
+
-
-
+
+
-
+
-
-
+
+
@@ -1442,16 +1442,16 @@
-
+
-
+
-
+
@@ -1460,7 +1460,7 @@
-
+
@@ -1471,7 +1471,7 @@
-
+
@@ -1482,7 +1482,7 @@
-
+
@@ -1491,11 +1491,11 @@
-
+
-
+
@@ -1504,7 +1504,7 @@
-
+
@@ -1513,7 +1513,7 @@
-
+
@@ -1525,7 +1525,7 @@
-
+
@@ -1534,7 +1534,7 @@
-
+
@@ -1542,7 +1542,7 @@
-
+
@@ -1553,7 +1553,7 @@
-
+
@@ -2032,7 +2032,7 @@
-
+
@@ -2042,14 +2042,26 @@
+
+
+
+
+
+
+
+
+
+
+
-
+
+
@@ -2108,7 +2120,7 @@
-
+
@@ -2121,7 +2133,7 @@
-
+
@@ -2230,7 +2242,7 @@
-
+
diff --git a/MonitorControl/UI/de.lproj/Localizable.strings b/MonitorControl/UI/de.lproj/Localizable.strings
index 62a693c0..34121587 100644
--- a/MonitorControl/UI/de.lproj/Localizable.strings
+++ b/MonitorControl/UI/de.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (Schattierung)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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." = "Dieser Bildschirm ermöglicht eine Software-Helligkeitssteuerung über gammable Manipulation, da er keine Hardware-Steuerung unterstützt. Gründe dafür können die Verwendung des HDMI-Anschlusses eines Mac mini (der die Hardware-DDC-Steuerung blockiert) oder ein Bildschirm auf der Sperrliste sein.";
+/* Shown in the Display Preferences */
+"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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." = "Dieser Bildschirm hat einen nicht definierten Kontrollzustand.";
diff --git a/MonitorControl/UI/de.lproj/Main.strings b/MonitorControl/UI/de.lproj/Main.strings
index dac72ac2..1758c17e 100644
--- a/MonitorControl/UI/de.lproj/Main.strings
+++ b/MonitorControl/UI/de.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Helligkeitsregler im Menü anzeigen";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Getrennte Skalen für kombiniertes Dimmen von Hardware und Software";
diff --git a/MonitorControl/UI/en.lproj/Localizable.strings b/MonitorControl/UI/en.lproj/Localizable.strings
index 001bcab4..eebff6a2 100644
--- a/MonitorControl/UI/en.lproj/Localizable.strings
+++ b/MonitorControl/UI/en.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (shade)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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.";
diff --git a/MonitorControl/UI/en.lproj/Main.strings b/MonitorControl/UI/en.lproj/Main.strings
index 5c397aac..966abd54 100644
--- a/MonitorControl/UI/en.lproj/Main.strings
+++ b/MonitorControl/UI/en.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* 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";
diff --git a/MonitorControl/UI/es-419.lproj/Localizable.strings b/MonitorControl/UI/es-419.lproj/Localizable.strings
index 16b12055..882a8040 100644
--- a/MonitorControl/UI/es-419.lproj/Localizable.strings
+++ b/MonitorControl/UI/es-419.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (shade)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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.";
diff --git a/MonitorControl/UI/es-419.lproj/Main.strings b/MonitorControl/UI/es-419.lproj/Main.strings
index c26a56f2..7baa04ec 100644
--- a/MonitorControl/UI/es-419.lproj/Main.strings
+++ b/MonitorControl/UI/es-419.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* 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";
diff --git a/MonitorControl/UI/fr.lproj/Localizable.strings b/MonitorControl/UI/fr.lproj/Localizable.strings
index e74b8af7..49a6d749 100644
--- a/MonitorControl/UI/fr.lproj/Localizable.strings
+++ b/MonitorControl/UI/fr.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Logiciel (Voile)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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." = "Cet écran permet un contrôle de la luminosité logiciel via une manipulation des tables gamma car il ne prend pas en charge le contrôle matériel. Cela peut être dû à l'utilisation du port HDMI d'un Mac mini (qui bloque le contrôle DDC matériel) ou à un écran sur liste noire.";
+/* Shown in the Display Preferences */
+"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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." = "Cet écran a un état de contrôle non spécifié.";
diff --git a/MonitorControl/UI/fr.lproj/Main.strings b/MonitorControl/UI/fr.lproj/Main.strings
index 98995f2b..0437649d 100644
--- a/MonitorControl/UI/fr.lproj/Main.strings
+++ b/MonitorControl/UI/fr.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Afficher le curseur de luminosité dans le menu";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Séparer les échelles pour le contrôle matériel et logiciel combiné";
diff --git a/MonitorControl/UI/hu.lproj/Localizable.strings b/MonitorControl/UI/hu.lproj/Localizable.strings
index c9568407..6321fa85 100644
--- a/MonitorControl/UI/hu.lproj/Localizable.strings
+++ b/MonitorControl/UI/hu.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Szoftver (árnyékolás)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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." = "A kijelzőnek nem meghatározott a vezérlési státusza.";
diff --git a/MonitorControl/UI/hu.lproj/Main.strings b/MonitorControl/UI/hu.lproj/Main.strings
index 0c415c90..68d9005e 100644
--- a/MonitorControl/UI/hu.lproj/Main.strings
+++ b/MonitorControl/UI/hu.lproj/Main.strings
@@ -241,6 +241,9 @@
/* 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 = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* 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";
diff --git a/MonitorControl/UI/it.lproj/Localizable.strings b/MonitorControl/UI/it.lproj/Localizable.strings
index b8540a82..140e0684 100644
--- a/MonitorControl/UI/it.lproj/Localizable.strings
+++ b/MonitorControl/UI/it.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (Sfumatura)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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." = "Questo monitor permette il controllo software della luminositò attraverso la manipolazione della gammatable e non supporta un controllo hardware. Un motivo potrebbe essere Reasons l'utilizzo della porta HDMI su un Mac Mini (che blocca il controllo hardware DCC) oppure avere un monitor non supportato.";
+/* Shown in the Display Preferences */
+"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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." = "Questo monitor ha uno stato di controllo non specificato.";
diff --git a/MonitorControl/UI/it.lproj/Main.strings b/MonitorControl/UI/it.lproj/Main.strings
index 4042e600..f215b7df 100644
--- a/MonitorControl/UI/it.lproj/Main.strings
+++ b/MonitorControl/UI/it.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Mostra lo slider della luminositò nel menu";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Scale separate per controllo combinato della attenuazione hw/sw";
diff --git a/MonitorControl/UI/ja.lproj/Localizable.strings b/MonitorControl/UI/ja.lproj/Localizable.strings
index 7574aba6..f7f0b788 100644
--- a/MonitorControl/UI/ja.lproj/Localizable.strings
+++ b/MonitorControl/UI/ja.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (shade)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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.";
diff --git a/MonitorControl/UI/ja.lproj/Main.strings b/MonitorControl/UI/ja.lproj/Main.strings
index 0050f475..77e27f34 100644
--- a/MonitorControl/UI/ja.lproj/Main.strings
+++ b/MonitorControl/UI/ja.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* 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";
diff --git a/MonitorControl/UI/ko.lproj/Localizable.strings b/MonitorControl/UI/ko.lproj/Localizable.strings
index 31ec2c44..8edc5f65 100644
--- a/MonitorControl/UI/ko.lproj/Localizable.strings
+++ b/MonitorControl/UI/ko.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "소프트웨어 (명암)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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." = "이 디스플레이는 하드웨어 제어를 지원하지 않기 때문에 감마 설정을 통해 소프트웨어로 밝기를 제어합니다. 그 이유는 하드웨어 DDC 제어가 차단된 Mac mini의 HDMI 포트를 사용하였거나 블랙리스트에 포함된 디스플레이를 사용하고 있기 때문일 수 있습니다.";
+/* Shown in the Display Preferences */
+"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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." = "이 디스플레이에는 지정되지 않은 제어 상태가 있습니다.";
diff --git a/MonitorControl/UI/ko.lproj/Main.strings b/MonitorControl/UI/ko.lproj/Main.strings
index c5d596b5..a38b70de 100644
--- a/MonitorControl/UI/ko.lproj/Main.strings
+++ b/MonitorControl/UI/ko.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "메뉴에 밝기 슬라이더 표시";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "통합된 하드웨어 및 소프트웨어 밝기 조절을 위한 별도의 스케일";
diff --git a/MonitorControl/UI/nl.lproj/Localizable.strings b/MonitorControl/UI/nl.lproj/Localizable.strings
index 1bfb10c4..cc4247ca 100644
--- a/MonitorControl/UI/nl.lproj/Localizable.strings
+++ b/MonitorControl/UI/nl.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (shade)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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." = "Dit scherm maakt softwarematige helderheidsregeling via gammatable-manipulatie mogelijk, aangezien het geen hardwarecontrole ondersteunt. Redenen hiervoor kunnen het gebruik van de HDMI-poort van een Mac mini zijn (die hardwarematige DDC-besturing blokkeert) of een niet-ondersteund scherm.";
+/* Shown in the Display Preferences */
+"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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." = "Dit scherm heeft een niet-gespecificeerde controlestatus.";
diff --git a/MonitorControl/UI/nl.lproj/Main.strings b/MonitorControl/UI/nl.lproj/Main.strings
index c6a02151..9af2cb53 100644
--- a/MonitorControl/UI/nl.lproj/Main.strings
+++ b/MonitorControl/UI/nl.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Helderheidsregelaar in menu weergeven";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Aparte schaal voor gecombineerd hardware & software dimmen";
diff --git a/MonitorControl/UI/pl.lproj/Localizable.strings b/MonitorControl/UI/pl.lproj/Localizable.strings
index a6bcc155..b0fd745b 100644
--- a/MonitorControl/UI/pl.lproj/Localizable.strings
+++ b/MonitorControl/UI/pl.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (shade)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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.";
diff --git a/MonitorControl/UI/pl.lproj/Main.strings b/MonitorControl/UI/pl.lproj/Main.strings
index 36ae7b3b..8e139bc6 100644
--- a/MonitorControl/UI/pl.lproj/Main.strings
+++ b/MonitorControl/UI/pl.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* 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";
diff --git a/MonitorControl/UI/ru.lproj/Localizable.strings b/MonitorControl/UI/ru.lproj/Localizable.strings
index c484a3cc..ad316d14 100644
--- a/MonitorControl/UI/ru.lproj/Localizable.strings
+++ b/MonitorControl/UI/ru.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (shade)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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.";
diff --git a/MonitorControl/UI/ru.lproj/Main.strings b/MonitorControl/UI/ru.lproj/Main.strings
index fdc92eea..96dd3a56 100644
--- a/MonitorControl/UI/ru.lproj/Main.strings
+++ b/MonitorControl/UI/ru.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* 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";
diff --git a/MonitorControl/UI/tr.lproj/Localizable.strings b/MonitorControl/UI/tr.lproj/Localizable.strings
index 492233ec..d745396f 100644
--- a/MonitorControl/UI/tr.lproj/Localizable.strings
+++ b/MonitorControl/UI/tr.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (shade)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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." = "Bu ekran, donanım kontrolünü desteklemediği için gamlanabilir manipülasyon yoluyla yazılım parlaklık kontrolüne izin verir. Bunun nedenleri, bir Mac mini'nin (donanım DDC kontrolünü engelleyen) HDMI bağlantı noktasını kullanmak veya kara listeye alınmış bir ekrana sahip olmak olabilir.";
+/* Shown in the Display Preferences */
+"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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." = "Bu ekranın belirtilmemiş bir kontrol durumu var.";
diff --git a/MonitorControl/UI/tr.lproj/Main.strings b/MonitorControl/UI/tr.lproj/Main.strings
index 10ce2823..3520729c 100644
--- a/MonitorControl/UI/tr.lproj/Main.strings
+++ b/MonitorControl/UI/tr.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Menüde parlaklık kaydırıcısını göster";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Birleşik donanım ve yazılım karartması için ayrı dengeler";
diff --git a/MonitorControl/UI/uk.lproj/Localizable.strings b/MonitorControl/UI/uk.lproj/Localizable.strings
index 17c2277a..9cbfcfa1 100644
--- a/MonitorControl/UI/uk.lproj/Localizable.strings
+++ b/MonitorControl/UI/uk.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (shade)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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.";
diff --git a/MonitorControl/UI/uk.lproj/Main.strings b/MonitorControl/UI/uk.lproj/Main.strings
index 23b87718..ec4d0c71 100644
--- a/MonitorControl/UI/uk.lproj/Main.strings
+++ b/MonitorControl/UI/uk.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* 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";
diff --git a/MonitorControl/UI/zh-Hans.lproj/Localizable.strings b/MonitorControl/UI/zh-Hans.lproj/Localizable.strings
index e0667be8..d9039512 100644
--- a/MonitorControl/UI/zh-Hans.lproj/Localizable.strings
+++ b/MonitorControl/UI/zh-Hans.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "Software (shade)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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.";
diff --git a/MonitorControl/UI/zh-Hans.lproj/Main.strings b/MonitorControl/UI/zh-Hans.lproj/Main.strings
index 6b999829..da1e755b 100644
--- a/MonitorControl/UI/zh-Hans.lproj/Main.strings
+++ b/MonitorControl/UI/zh-Hans.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* 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";
diff --git a/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings b/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings
index 5278274d..9481fcb8 100644
--- a/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings
+++ b/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings
@@ -97,9 +97,15 @@
/* Shown in the Display Preferences */
"Software (shade)" = "軟體 (shade)";
+/* Shown in the Display Preferences */
+"Software (shade, forced)" = "Software (shade, forced)";
+
/* 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." = "此螢幕不支援硬體控制,亮度調整將以軟體調整伽瑪值來實現。原因可能出於使用Mac mini的HDMI埠(硬體DDC無法使用)或是使用不支援的螢幕。";
+/* Shown in the Display Preferences */
+"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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." = "此螢幕有未指定的控制狀態";
diff --git a/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings b/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings
index a8ec5969..59a76c48 100644
--- a/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings
+++ b/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings
@@ -241,6 +241,9 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "顯示亮度控制滑桿";
+/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "使用硬體結合軟體調整時忽略軟體調整的範圍";
diff --git a/MonitorControl/View Controllers/DisplaysPrefsCellView.swift b/MonitorControl/View Controllers/DisplaysPrefsCellView.swift
index 90b3035d..1658f0f7 100644
--- a/MonitorControl/View Controllers/DisplaysPrefsCellView.swift
+++ b/MonitorControl/View Controllers/DisplaysPrefsCellView.swift
@@ -15,6 +15,7 @@ class DisplaysPrefsCellView: NSTableCellView {
@IBOutlet var displayId: NSTextFieldCell!
@IBOutlet var enabledButton: NSButton!
@IBOutlet var ddcButton: NSButton!
+ @IBOutlet var avoidGamma: NSButton!
@IBOutlet var controlMethod: NSTextFieldCell!
@IBOutlet var displayType: NSTextFieldCell!
@IBOutlet var disableVolumeOSDButton: NSButton!
@@ -55,12 +56,6 @@ class DisplaysPrefsCellView: NSTableCellView {
@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()
@@ -198,6 +193,24 @@ class DisplaysPrefsCellView: NSTableCellView {
}
}
+ @IBAction func avoidGamma(_ sender: NSButton) {
+ if let display = display as? OtherDisplay {
+ _ = display.setSwBrightness(1)
+ _ = display.setDirectBrightness(1)
+ switch sender.state {
+ case .on:
+ display.savePref(true, key: .avoidGamma)
+ case .off:
+ display.savePref(false, key: .avoidGamma)
+ default:
+ break
+ }
+ let displayInfo = DisplaysPrefsViewController.getDisplayInfo(display: display)
+ self.controlMethod.stringValue = displayInfo.controlMethod
+ self.controlMethod.controlView?.toolTip = displayInfo.controlStatus
+ }
+ }
+
func tagCommand(_ tag: Int) -> Command {
var command: Command
switch tag {
@@ -345,6 +358,8 @@ class DisplaysPrefsCellView: NSTableCellView {
if self.ddcButton.isEnabled { // This signifies that the DDC block is enabled
self.ddcButton.state = .on
self.ddcButtonToggled(self.ddcButton)
+ self.avoidGamma.state = .off
+ self.ddcButtonToggled(self.avoidGamma)
self.enabledButton.state = .on
self.enabledButtonToggled(self.enabledButton)
self.disableVolumeOSDButton.state = .off
diff --git a/MonitorControl/View Controllers/DisplaysPrefsViewController.swift b/MonitorControl/View Controllers/DisplaysPrefsViewController.swift
index d9259733..6424513a 100644
--- a/MonitorControl/View Controllers/DisplaysPrefsViewController.swift
+++ b/MonitorControl/View Controllers/DisplaysPrefsViewController.swift
@@ -83,12 +83,20 @@ class DisplaysPrefsViewController: NSViewController, PreferencePane, NSTableView
displayImage = "display"
if let otherDisplay: OtherDisplay = display as? OtherDisplay {
if otherDisplay.isSwOnly() {
- controlMethod = NSLocalizedString("Software (gamma)", comment: "Shown in the Display Preferences") + " ⚠️"
+ if otherDisplay.readPrefAsBool(key: .avoidGamma) {
+ controlMethod = NSLocalizedString("Software (shade)", comment: "Shown in the Display Preferences") + " ⚠️"
+ } else {
+ 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")
+ controlStatus = NSLocalizedString("This display allows for software brightness control via gammatable manipulation or shade 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") + " ⚠️"
+ if otherDisplay.readPrefAsBool(key: .avoidGamma) {
+ controlMethod = NSLocalizedString("Software (shade, forced)", comment: "Shown in the Display Preferences")
+ } else {
+ 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")
@@ -130,6 +138,13 @@ class DisplaysPrefsViewController: NSViewController, PreferencePane, NSTableView
cell.friendlyName.isEditable = true
// Enabled
cell.enabledButton.state = display.readPrefAsBool(key: .isDisabled) ? .off : .on
+ // Enabled
+ cell.avoidGamma.state = display.readPrefAsBool(key: .avoidGamma) ? .on : .off
+ if (display as? OtherDisplay)?.isVirtual ?? true {
+ cell.avoidGamma.isEnabled = false
+ } else {
+ cell.avoidGamma.isEnabled = true
+ }
// DDC
cell.ddcButton.state = ((display as? OtherDisplay)?.isSw() ?? true) ? .off : .on
if ((display as? OtherDisplay)?.isSwOnly() ?? true) || ((display as? OtherDisplay)?.isVirtual ?? true) {
@@ -289,10 +304,10 @@ class DisplaysPrefsViewController: NSViewController, PreferencePane, NSTableView
func updateDisplayListRowHeight() {
if prefs.bool(forKey: PrefKey.showAdvancedSettings.rawValue) {
- self.displayList?.rowHeight = 500
+ self.displayList?.rowHeight = 520
self.constraintHeight?.constant = self.displayList.rowHeight + 15
} else {
- self.displayList?.rowHeight = 165
+ self.displayList?.rowHeight = 185
self.constraintHeight?.constant = self.displayList.rowHeight * 2 + 15
}
}
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index 0eee4df9..add35bab 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6410
+ 6418
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From a29008e9961d75b0e117f2689235078effaa2693 Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Mon, 4 Oct 2021 23:20:29 +0200
Subject: [PATCH 06/18] Fix some translation errors
---
MonitorControl/Enums/PrefKey.swift | 2 +-
MonitorControl/Info.plist | 2 +-
MonitorControl/UI/Base.lproj/Main.storyboard | 5 ++---
MonitorControl/UI/de.lproj/Localizable.strings | 5 +----
MonitorControl/UI/de.lproj/Main.strings | 4 ++--
MonitorControl/UI/en.lproj/Localizable.strings | 5 +----
MonitorControl/UI/en.lproj/Main.strings | 4 ++--
MonitorControl/UI/es-419.lproj/Localizable.strings | 5 +----
MonitorControl/UI/es-419.lproj/Main.strings | 4 ++--
MonitorControl/UI/fr.lproj/Localizable.strings | 5 +----
MonitorControl/UI/fr.lproj/Main.strings | 4 ++--
MonitorControl/UI/hu.lproj/Localizable.strings | 7 ++-----
MonitorControl/UI/hu.lproj/Main.strings | 4 ++--
MonitorControl/UI/it.lproj/Localizable.strings | 5 +----
MonitorControl/UI/it.lproj/Main.strings | 4 ++--
MonitorControl/UI/ja.lproj/Localizable.strings | 5 +----
MonitorControl/UI/ja.lproj/Main.strings | 4 ++--
MonitorControl/UI/ko.lproj/Localizable.strings | 5 +----
MonitorControl/UI/ko.lproj/Main.strings | 4 ++--
MonitorControl/UI/nl.lproj/Localizable.strings | 5 +----
MonitorControl/UI/nl.lproj/Main.strings | 4 ++--
MonitorControl/UI/pl.lproj/Localizable.strings | 5 +----
MonitorControl/UI/pl.lproj/Main.strings | 4 ++--
MonitorControl/UI/ru.lproj/Localizable.strings | 5 +----
MonitorControl/UI/ru.lproj/Main.strings | 4 ++--
MonitorControl/UI/tr.lproj/Localizable.strings | 5 +----
MonitorControl/UI/tr.lproj/Main.strings | 4 ++--
MonitorControl/UI/uk.lproj/Localizable.strings | 5 +----
MonitorControl/UI/uk.lproj/Main.strings | 4 ++--
MonitorControl/UI/zh-Hans.lproj/Localizable.strings | 5 +----
MonitorControl/UI/zh-Hans.lproj/Main.strings | 4 ++--
MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings | 5 +----
MonitorControl/UI/zh-Hant-TW.lproj/Main.strings | 4 ++--
.../View Controllers/DisplaysPrefsViewController.swift | 2 +-
MonitorControlHelper/Info.plist | 2 +-
35 files changed, 52 insertions(+), 98 deletions(-)
diff --git a/MonitorControl/Enums/PrefKey.swift b/MonitorControl/Enums/PrefKey.swift
index bbb30ee0..ec67f81e 100644
--- a/MonitorControl/Enums/PrefKey.swift
+++ b/MonitorControl/Enums/PrefKey.swift
@@ -22,7 +22,7 @@ enum PrefKey: String {
// DDC polling count for display
case pollingCount
- // Display should avoid gammatable manipulation and use shades instead (to coexist with other apps doing gamma manipulation)
+ // Display should avoid gamma table manipulation and use shades instead (to coexist with other apps doing gamma manipulation)
case avoidGamma
// Command value display
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index 970eeef9..7622dde7 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6418
+ 6420
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/UI/Base.lproj/Main.storyboard b/MonitorControl/UI/Base.lproj/Main.storyboard
index bd4447b5..5e408dff 100644
--- a/MonitorControl/UI/Base.lproj/Main.storyboard
+++ b/MonitorControl/UI/Base.lproj/Main.storyboard
@@ -1,7 +1,6 @@
-
@@ -1420,7 +1419,7 @@
-
+
@@ -2045,7 +2044,7 @@
-
+
diff --git a/MonitorControl/UI/de.lproj/Localizable.strings b/MonitorControl/UI/de.lproj/Localizable.strings
index 34121587..dc870013 100644
--- a/MonitorControl/UI/de.lproj/Localizable.strings
+++ b/MonitorControl/UI/de.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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." = "Dieser Bildschirm ermöglicht eine Software-Helligkeitssteuerung über gammable Manipulation, da er keine Hardware-Steuerung unterstützt. Gründe dafür können die Verwendung des HDMI-Anschlusses eines Mac mini (der die Hardware-DDC-Steuerung blockiert) oder ein Bildschirm auf der Sperrliste sein.";
-
-/* Shown in the Display Preferences */
-"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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." = "Dieser Bildschirm ermöglicht eine Software-Helligkeitssteuerung über gammable Manipulation, da er keine Hardware-Steuerung unterstützt. Gründe dafür können die Verwendung des HDMI-Anschlusses eines Mac mini (der die Hardware-DDC-Steuerung blockiert) oder ein Bildschirm auf der Sperrliste sein.";
/* Shown in the Display Preferences */
"This display has an unspecified control status." = "Dieser Bildschirm hat einen nicht definierten Kontrollzustand.";
diff --git a/MonitorControl/UI/de.lproj/Main.strings b/MonitorControl/UI/de.lproj/Main.strings
index 1758c17e..2826ceb8 100644
--- a/MonitorControl/UI/de.lproj/Main.strings
+++ b/MonitorControl/UI/de.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Helligkeitsregler im Menü anzeigen";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Getrennte Skalen für kombiniertes Dimmen von Hardware und Software";
diff --git a/MonitorControl/UI/en.lproj/Localizable.strings b/MonitorControl/UI/en.lproj/Localizable.strings
index eebff6a2..2d5f859d 100644
--- a/MonitorControl/UI/en.lproj/Localizable.strings
+++ b/MonitorControl/UI/en.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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 gamma table manipulation or shade 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.";
diff --git a/MonitorControl/UI/en.lproj/Main.strings b/MonitorControl/UI/en.lproj/Main.strings
index 966abd54..517d4519 100644
--- a/MonitorControl/UI/en.lproj/Main.strings
+++ b/MonitorControl/UI/en.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* 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";
diff --git a/MonitorControl/UI/es-419.lproj/Localizable.strings b/MonitorControl/UI/es-419.lproj/Localizable.strings
index 882a8040..bc3e049f 100644
--- a/MonitorControl/UI/es-419.lproj/Localizable.strings
+++ b/MonitorControl/UI/es-419.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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 gamma table manipulation or shade 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.";
diff --git a/MonitorControl/UI/es-419.lproj/Main.strings b/MonitorControl/UI/es-419.lproj/Main.strings
index 7baa04ec..7165f130 100644
--- a/MonitorControl/UI/es-419.lproj/Main.strings
+++ b/MonitorControl/UI/es-419.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* 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";
diff --git a/MonitorControl/UI/fr.lproj/Localizable.strings b/MonitorControl/UI/fr.lproj/Localizable.strings
index 49a6d749..5a2ef50f 100644
--- a/MonitorControl/UI/fr.lproj/Localizable.strings
+++ b/MonitorControl/UI/fr.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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." = "Cet écran permet un contrôle de la luminosité logiciel via une manipulation des tables gamma car il ne prend pas en charge le contrôle matériel. Cela peut être dû à l'utilisation du port HDMI d'un Mac mini (qui bloque le contrôle DDC matériel) ou à un écran sur liste noire.";
-
-/* Shown in the Display Preferences */
-"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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." = "Cet écran permet un contrôle de la luminosité logiciel via une manipulation des tables gamma car il ne prend pas en charge le contrôle matériel. Cela peut être dû à l'utilisation du port HDMI d'un Mac mini (qui bloque le contrôle DDC matériel) ou à un écran sur liste noire.";
/* Shown in the Display Preferences */
"This display has an unspecified control status." = "Cet écran a un état de contrôle non spécifié.";
diff --git a/MonitorControl/UI/fr.lproj/Main.strings b/MonitorControl/UI/fr.lproj/Main.strings
index 0437649d..56482271 100644
--- a/MonitorControl/UI/fr.lproj/Main.strings
+++ b/MonitorControl/UI/fr.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Afficher le curseur de luminosité dans le menu";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Séparer les échelles pour le contrôle matériel et logiciel combiné";
diff --git a/MonitorControl/UI/hu.lproj/Localizable.strings b/MonitorControl/UI/hu.lproj/Localizable.strings
index 6321fa85..132031a3 100644
--- a/MonitorControl/UI/hu.lproj/Localizable.strings
+++ b/MonitorControl/UI/hu.lproj/Localizable.strings
@@ -98,13 +98,10 @@
"Software (shade)" = "Szoftver (árnyékolás)";
/* Shown in the Display Preferences */
-"Software (shade, forced)" = "Software (shade, forced)";
+"Software (shade, forced)" = "Szoftver (erőltetett)";
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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 módosítás vagy árnyékolá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.";
diff --git a/MonitorControl/UI/hu.lproj/Main.strings b/MonitorControl/UI/hu.lproj/Main.strings
index 68d9005e..84a4e592 100644
--- a/MonitorControl/UI/hu.lproj/Main.strings
+++ b/MonitorControl/UI/hu.lproj/Main.strings
@@ -241,8 +241,8 @@
/* 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 = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Gamma tábla módosítás kerülése";
/* 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";
diff --git a/MonitorControl/UI/it.lproj/Localizable.strings b/MonitorControl/UI/it.lproj/Localizable.strings
index 140e0684..d6f495b5 100644
--- a/MonitorControl/UI/it.lproj/Localizable.strings
+++ b/MonitorControl/UI/it.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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." = "Questo monitor permette il controllo software della luminositò attraverso la manipolazione della gammatable e non supporta un controllo hardware. Un motivo potrebbe essere Reasons l'utilizzo della porta HDMI su un Mac Mini (che blocca il controllo hardware DCC) oppure avere un monitor non supportato.";
-
-/* Shown in the Display Preferences */
-"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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." = "Questo monitor permette il controllo software della luminositò attraverso la manipolazione della gammatable e non supporta un controllo hardware. Un motivo potrebbe essere Reasons l'utilizzo della porta HDMI su un Mac Mini (che blocca il controllo hardware DCC) oppure avere un monitor non supportato.";
/* Shown in the Display Preferences */
"This display has an unspecified control status." = "Questo monitor ha uno stato di controllo non specificato.";
diff --git a/MonitorControl/UI/it.lproj/Main.strings b/MonitorControl/UI/it.lproj/Main.strings
index f215b7df..3bfd18fe 100644
--- a/MonitorControl/UI/it.lproj/Main.strings
+++ b/MonitorControl/UI/it.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Mostra lo slider della luminositò nel menu";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Scale separate per controllo combinato della attenuazione hw/sw";
diff --git a/MonitorControl/UI/ja.lproj/Localizable.strings b/MonitorControl/UI/ja.lproj/Localizable.strings
index f7f0b788..098bcc55 100644
--- a/MonitorControl/UI/ja.lproj/Localizable.strings
+++ b/MonitorControl/UI/ja.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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 gamma table manipulation or shade 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.";
diff --git a/MonitorControl/UI/ja.lproj/Main.strings b/MonitorControl/UI/ja.lproj/Main.strings
index 77e27f34..37a114a4 100644
--- a/MonitorControl/UI/ja.lproj/Main.strings
+++ b/MonitorControl/UI/ja.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* 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";
diff --git a/MonitorControl/UI/ko.lproj/Localizable.strings b/MonitorControl/UI/ko.lproj/Localizable.strings
index 8edc5f65..dd9c2453 100644
--- a/MonitorControl/UI/ko.lproj/Localizable.strings
+++ b/MonitorControl/UI/ko.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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." = "이 디스플레이는 하드웨어 제어를 지원하지 않기 때문에 감마 설정을 통해 소프트웨어로 밝기를 제어합니다. 그 이유는 하드웨어 DDC 제어가 차단된 Mac mini의 HDMI 포트를 사용하였거나 블랙리스트에 포함된 디스플레이를 사용하고 있기 때문일 수 있습니다.";
-
-/* Shown in the Display Preferences */
-"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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." = "이 디스플레이는 하드웨어 제어를 지원하지 않기 때문에 감마 설정을 통해 소프트웨어로 밝기를 제어합니다. 그 이유는 하드웨어 DDC 제어가 차단된 Mac mini의 HDMI 포트를 사용하였거나 블랙리스트에 포함된 디스플레이를 사용하고 있기 때문일 수 있습니다.";
/* Shown in the Display Preferences */
"This display has an unspecified control status." = "이 디스플레이에는 지정되지 않은 제어 상태가 있습니다.";
diff --git a/MonitorControl/UI/ko.lproj/Main.strings b/MonitorControl/UI/ko.lproj/Main.strings
index a38b70de..a4b55356 100644
--- a/MonitorControl/UI/ko.lproj/Main.strings
+++ b/MonitorControl/UI/ko.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "메뉴에 밝기 슬라이더 표시";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "통합된 하드웨어 및 소프트웨어 밝기 조절을 위한 별도의 스케일";
diff --git a/MonitorControl/UI/nl.lproj/Localizable.strings b/MonitorControl/UI/nl.lproj/Localizable.strings
index cc4247ca..66c220bf 100644
--- a/MonitorControl/UI/nl.lproj/Localizable.strings
+++ b/MonitorControl/UI/nl.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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." = "Dit scherm maakt softwarematige helderheidsregeling via gammatable-manipulatie mogelijk, aangezien het geen hardwarecontrole ondersteunt. Redenen hiervoor kunnen het gebruik van de HDMI-poort van een Mac mini zijn (die hardwarematige DDC-besturing blokkeert) of een niet-ondersteund scherm.";
-
-/* Shown in the Display Preferences */
-"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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." = "Dit scherm maakt softwarematige helderheidsregeling via gammatable-manipulatie mogelijk, aangezien het geen hardwarecontrole ondersteunt. Redenen hiervoor kunnen het gebruik van de HDMI-poort van een Mac mini zijn (die hardwarematige DDC-besturing blokkeert) of een niet-ondersteund scherm.";
/* Shown in the Display Preferences */
"This display has an unspecified control status." = "Dit scherm heeft een niet-gespecificeerde controlestatus.";
diff --git a/MonitorControl/UI/nl.lproj/Main.strings b/MonitorControl/UI/nl.lproj/Main.strings
index 9af2cb53..e7974357 100644
--- a/MonitorControl/UI/nl.lproj/Main.strings
+++ b/MonitorControl/UI/nl.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Helderheidsregelaar in menu weergeven";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Aparte schaal voor gecombineerd hardware & software dimmen";
diff --git a/MonitorControl/UI/pl.lproj/Localizable.strings b/MonitorControl/UI/pl.lproj/Localizable.strings
index b0fd745b..109da4c2 100644
--- a/MonitorControl/UI/pl.lproj/Localizable.strings
+++ b/MonitorControl/UI/pl.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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 gamma table manipulation or shade 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.";
diff --git a/MonitorControl/UI/pl.lproj/Main.strings b/MonitorControl/UI/pl.lproj/Main.strings
index 8e139bc6..025440f2 100644
--- a/MonitorControl/UI/pl.lproj/Main.strings
+++ b/MonitorControl/UI/pl.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* 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";
diff --git a/MonitorControl/UI/ru.lproj/Localizable.strings b/MonitorControl/UI/ru.lproj/Localizable.strings
index ad316d14..b6f59cfa 100644
--- a/MonitorControl/UI/ru.lproj/Localizable.strings
+++ b/MonitorControl/UI/ru.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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 gamma table manipulation or shade 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.";
diff --git a/MonitorControl/UI/ru.lproj/Main.strings b/MonitorControl/UI/ru.lproj/Main.strings
index 96dd3a56..99d5edb7 100644
--- a/MonitorControl/UI/ru.lproj/Main.strings
+++ b/MonitorControl/UI/ru.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* 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";
diff --git a/MonitorControl/UI/tr.lproj/Localizable.strings b/MonitorControl/UI/tr.lproj/Localizable.strings
index d745396f..82ceb229 100644
--- a/MonitorControl/UI/tr.lproj/Localizable.strings
+++ b/MonitorControl/UI/tr.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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." = "Bu ekran, donanım kontrolünü desteklemediği için gamlanabilir manipülasyon yoluyla yazılım parlaklık kontrolüne izin verir. Bunun nedenleri, bir Mac mini'nin (donanım DDC kontrolünü engelleyen) HDMI bağlantı noktasını kullanmak veya kara listeye alınmış bir ekrana sahip olmak olabilir.";
-
-/* Shown in the Display Preferences */
-"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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." = "Bu ekran, donanım kontrolünü desteklemediği için gamlanabilir manipülasyon yoluyla yazılım parlaklık kontrolüne izin verir. Bunun nedenleri, bir Mac mini'nin (donanım DDC kontrolünü engelleyen) HDMI bağlantı noktasını kullanmak veya kara listeye alınmış bir ekrana sahip olmak olabilir.";
/* Shown in the Display Preferences */
"This display has an unspecified control status." = "Bu ekranın belirtilmemiş bir kontrol durumu var.";
diff --git a/MonitorControl/UI/tr.lproj/Main.strings b/MonitorControl/UI/tr.lproj/Main.strings
index 3520729c..04704220 100644
--- a/MonitorControl/UI/tr.lproj/Main.strings
+++ b/MonitorControl/UI/tr.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Menüde parlaklık kaydırıcısını göster";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Birleşik donanım ve yazılım karartması için ayrı dengeler";
diff --git a/MonitorControl/UI/uk.lproj/Localizable.strings b/MonitorControl/UI/uk.lproj/Localizable.strings
index 9cbfcfa1..81782d12 100644
--- a/MonitorControl/UI/uk.lproj/Localizable.strings
+++ b/MonitorControl/UI/uk.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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 gamma table manipulation or shade 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.";
diff --git a/MonitorControl/UI/uk.lproj/Main.strings b/MonitorControl/UI/uk.lproj/Main.strings
index ec4d0c71..88e1692a 100644
--- a/MonitorControl/UI/uk.lproj/Main.strings
+++ b/MonitorControl/UI/uk.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* 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";
diff --git a/MonitorControl/UI/zh-Hans.lproj/Localizable.strings b/MonitorControl/UI/zh-Hans.lproj/Localizable.strings
index d9039512..1b90ddaf 100644
--- a/MonitorControl/UI/zh-Hans.lproj/Localizable.strings
+++ b/MonitorControl/UI/zh-Hans.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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 allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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 gamma table manipulation or shade 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.";
diff --git a/MonitorControl/UI/zh-Hans.lproj/Main.strings b/MonitorControl/UI/zh-Hans.lproj/Main.strings
index da1e755b..17b60546 100644
--- a/MonitorControl/UI/zh-Hans.lproj/Main.strings
+++ b/MonitorControl/UI/zh-Hans.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Show brightness slider in menu";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* 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";
diff --git a/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings b/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings
index 9481fcb8..c1b8de25 100644
--- a/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings
+++ b/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings
@@ -101,10 +101,7 @@
"Software (shade, forced)" = "Software (shade, forced)";
/* 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." = "此螢幕不支援硬體控制,亮度調整將以軟體調整伽瑪值來實現。原因可能出於使用Mac mini的HDMI埠(硬體DDC無法使用)或是使用不支援的螢幕。";
-
-/* Shown in the Display Preferences */
-"This display allows for software brightness control via gammatable manipulation or shade 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 or shade 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 gamma table manipulation or shade 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." = "此螢幕不支援硬體控制,亮度調整將以軟體調整伽瑪值來實現。原因可能出於使用Mac mini的HDMI埠(硬體DDC無法使用)或是使用不支援的螢幕。";
/* Shown in the Display Preferences */
"This display has an unspecified control status." = "此螢幕有未指定的控制狀態";
diff --git a/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings b/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings
index 59a76c48..022385c8 100644
--- a/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings
+++ b/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings
@@ -241,8 +241,8 @@
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "顯示亮度控制滑桿";
-/* Class = "NSButtonCell"; title = "Avoid gammatable manipulation"; ObjectID = "na6-mS-MPi"; */
-"na6-mS-MPi.title" = "Avoid gammatable manipulation";
+/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
+"na6-mS-MPi.title" = "Avoid gamma table manipulation";
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "使用硬體結合軟體調整時忽略軟體調整的範圍";
diff --git a/MonitorControl/View Controllers/DisplaysPrefsViewController.swift b/MonitorControl/View Controllers/DisplaysPrefsViewController.swift
index 6424513a..5a3a06bc 100644
--- a/MonitorControl/View Controllers/DisplaysPrefsViewController.swift
+++ b/MonitorControl/View Controllers/DisplaysPrefsViewController.swift
@@ -89,7 +89,7 @@ class DisplaysPrefsViewController: NSViewController, PreferencePane, NSTableView
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 or shade 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")
+ controlStatus = NSLocalizedString("This display allows for software brightness control via gamma table manipulation or shade 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() {
if otherDisplay.readPrefAsBool(key: .avoidGamma) {
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index add35bab..f10db339 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6418
+ 6420
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From d08193385ada8622daf9fb367ff033a08ea51b68 Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Mon, 4 Oct 2021 23:26:39 +0200
Subject: [PATCH 07/18] Fix signing
---
MonitorControl.xcodeproj/project.pbxproj | 16 ++++++++--------
MonitorControl/Info.plist | 2 +-
MonitorControlHelper/Info.plist | 2 +-
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/MonitorControl.xcodeproj/project.pbxproj b/MonitorControl.xcodeproj/project.pbxproj
index 29613a9c..bfca5703 100644
--- a/MonitorControl.xcodeproj/project.pbxproj
+++ b/MonitorControl.xcodeproj/project.pbxproj
@@ -771,11 +771,11 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = MonitorControl/MonitorControlDebug.entitlements;
- CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1179;
- DEVELOPMENT_TEAM = 53RQTTY9DR;
+ DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(PROJECT_DIR)/**",
@@ -806,11 +806,11 @@
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1179;
- DEVELOPMENT_TEAM = 53RQTTY9DR;
+ DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(PROJECT_DIR)/**",
@@ -844,11 +844,11 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = MonitorControlHelper/MonitorControlHelper.entitlements;
- CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 631;
- DEVELOPMENT_TEAM = 53RQTTY9DR;
+ DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = MonitorControlHelper/Info.plist;
@@ -873,11 +873,11 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = MonitorControlHelper/MonitorControlHelper.entitlements;
- CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 631;
- DEVELOPMENT_TEAM = 53RQTTY9DR;
+ DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = MonitorControlHelper/Info.plist;
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index 7622dde7..637c02d1 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6420
+ 6421
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index f10db339..89a30139 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6420
+ 6421
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From 04e0a9e05f524dff26346c663c2e4e0254e7d3a8 Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Tue, 5 Oct 2021 12:30:47 +0200
Subject: [PATCH 08/18] Make sure that key repeat speed for custom shortcuts do
not go below a certain threshold.
---
MonitorControl/Support/KeyboardShortcutsManager.swift | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/MonitorControl/Support/KeyboardShortcutsManager.swift b/MonitorControl/Support/KeyboardShortcutsManager.swift
index b8d54016..1c10a67b 100644
--- a/MonitorControl/Support/KeyboardShortcutsManager.swift
+++ b/MonitorControl/Support/KeyboardShortcutsManager.swift
@@ -56,8 +56,8 @@ class KeyboardShortcutsManager {
}
func engage(_ shortcut: KeyboardShortcuts.Name) {
- self.initialKeyRepeat = UserDefaults.standard.double(forKey: "InitialKeyRepeat") * 0.014
- self.keyRepeat = UserDefaults.standard.double(forKey: "KeyRepeat") * 0.014
+ self.initialKeyRepeat = max(15, UserDefaults.standard.double(forKey: "InitialKeyRepeat")) * 0.014
+ self.keyRepeat = max(2, UserDefaults.standard.double(forKey: "KeyRepeat")) * 0.014
self.currentCommand = shortcut
self.isFirstKeypress = true
self.isHold = true
From 9f3cc5cef55bc40f5da26d7b114aadde915c5e6d Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Tue, 5 Oct 2021 20:29:57 +0200
Subject: [PATCH 09/18] Reorganized PrefKey list to be less confusing.
---
MonitorControl/Enums/PrefKey.swift | 127 +++++++++++++++--------------
MonitorControl/Info.plist | 2 +-
MonitorControlHelper/Info.plist | 2 +-
3 files changed, 70 insertions(+), 61 deletions(-)
diff --git a/MonitorControl/Enums/PrefKey.swift b/MonitorControl/Enums/PrefKey.swift
index ec67f81e..3d81e74b 100644
--- a/MonitorControl/Enums/PrefKey.swift
+++ b/MonitorControl/Enums/PrefKey.swift
@@ -1,8 +1,7 @@
// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others
enum PrefKey: String {
- // Enable mute DDC for display
- case enableMuteUnmute
+ /* -- App-wide settings -- */
// Sparkle automatic checks
case SUEnableAutomaticChecks
@@ -10,57 +9,6 @@ enum PrefKey: String {
// Receive beta updates?
case isBetaChannel // This is not added to Preferences yet as it will be needed in the future only.
- // 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
-
- // Display should avoid gamma table manipulation and use shades instead (to coexist with other apps doing gamma manipulation)
- case avoidGamma
-
- // 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
@@ -94,9 +42,6 @@ enum PrefKey: String {
// Lower via software after brightness
case disableCombinedBrightness
- // Lower via software after brightness
- case combinedBrightnessSwitchingPoint
-
// Use separated OSD scale for combined brightness
case separateCombinedScale
@@ -115,9 +60,6 @@ enum PrefKey: String {
// 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
@@ -159,6 +101,73 @@ enum PrefKey: String {
// Combine sliders for all displays
case slidersCombine
+
+ /* -- Display specific settings */
+
+ // Enable mute DDC for display
+ case enableMuteUnmute
+
+ // 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
+
+ // Display should avoid gamma table manipulation and use shades instead (to coexist with other apps doing gamma manipulation)
+ case avoidGamma
+
+ // 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
+
+ // Combined brightness switching point
+ case combinedBrightnessSwitchingPoint
+
+ // Friendly name
+ case friendlyName
+
+ /* -- Display+Command specific settings -- */
+
+ // Command value display
+ case value
+
+ // Was the setting ever changed by the user?
+ case isTouched
+
+ // 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
}
enum PollingMode: Int {
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index 637c02d1..fc493261 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6421
+ 6424
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index 89a30139..1950807e 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6421
+ 6424
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From 54280459e916eabf8b213320a65c321ee35c5772 Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Tue, 5 Oct 2021 20:39:34 +0200
Subject: [PATCH 10/18] Disengage custom shortcut keyboard after 100 key repeat
to prevent possibly endless loop if keyUp event never arrives due to any
circumstance.
---
MonitorControl/Info.plist | 2 +-
MonitorControl/Support/KeyboardShortcutsManager.swift | 10 +++++++---
MonitorControlHelper/Info.plist | 2 +-
3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index fc493261..390090b4 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6424
+ 6428
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/Support/KeyboardShortcutsManager.swift b/MonitorControl/Support/KeyboardShortcutsManager.swift
index 1c10a67b..cd937ad2 100644
--- a/MonitorControl/Support/KeyboardShortcutsManager.swift
+++ b/MonitorControl/Support/KeyboardShortcutsManager.swift
@@ -5,8 +5,9 @@ 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 initialKeyRepeat = 0.21
+ var keyRepeat = 0.028
+ var keyRepeatCount = 0
var currentCommand = KeyboardShortcuts.Name.none
var isFirstKeypress = false
@@ -62,6 +63,7 @@ class KeyboardShortcutsManager {
self.isFirstKeypress = true
self.isHold = true
self.currentEventId += 1
+ self.keyRepeatCount = 0
self.apply(shortcut, eventId: self.currentEventId)
}
@@ -69,10 +71,11 @@ class KeyboardShortcutsManager {
self.isHold = false
self.isFirstKeypress = false
self.currentCommand = KeyboardShortcuts.Name.none
+ self.keyRepeatCount = 0
}
func apply(_ shortcut: KeyboardShortcuts.Name, eventId: Int) {
- guard app.sleepID == 0, app.reconfigureID == 0 else {
+ guard app.sleepID == 0, app.reconfigureID == 0, self.keyRepeatCount <= 100 else {
self.disengage()
return
}
@@ -92,6 +95,7 @@ class KeyboardShortcutsManager {
self.apply(shortcut, eventId: eventId)
}
}
+ self.keyRepeatCount += 1
switch shortcut {
case KeyboardShortcuts.Name.brightnessUp: self.brightness(isUp: true)
case KeyboardShortcuts.Name.brightnessDown: self.brightness(isUp: false)
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index 1950807e..a6f68ae8 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6424
+ 6428
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From 80b0a14dcd6c2a0201da2d306a6131064bccc7eb Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Tue, 5 Oct 2021 20:50:18 +0200
Subject: [PATCH 11/18] Don't relinquish control over brightness keys with no
external display connected if fine brightness OSD scale is active
---
MonitorControl/Info.plist | 2 +-
MonitorControl/Support/MediaKeyTapManager.swift | 6 +++---
MonitorControlHelper/Info.plist | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index 390090b4..72dff220 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6428
+ 6430
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/Support/MediaKeyTapManager.swift b/MonitorControl/Support/MediaKeyTapManager.swift
index 2a5f223a..f2eaace4 100644
--- a/MonitorControl/Support/MediaKeyTapManager.swift
+++ b/MonitorControl/Support/MediaKeyTapManager.swift
@@ -163,13 +163,13 @@ class MediaKeyTapManager: MediaKeyTapDelegate {
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
+ // Remove brightness keys if no external displays are connected, but only if brightness fine control is not active
var isInternalDisplayOnly = true
for display in DisplayManager.shared.getAllDisplays() where !display.isBuiltIn() {
isInternalDisplayOnly = false
}
- if isInternalDisplayOnly {
- let keysToDelete: [MediaKey] = [.volumeUp, .volumeDown, .mute, .brightnessUp, .brightnessDown]
+ if isInternalDisplayOnly, !prefs.bool(forKey: PrefKey.useFineScaleBrightness.rawValue) {
+ let keysToDelete: [MediaKey] = [.brightnessUp, .brightnessDown]
keys.removeAll { keysToDelete.contains($0) }
}
// Remove volume related keys if audio device is controllable
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index a6f68ae8..449dd640 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6428
+ 6430
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From 04c8339190c9c8affdbb4c85d34ed966add9d75e Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Tue, 5 Oct 2021 21:10:32 +0200
Subject: [PATCH 12/18] Register DDC command touched status. When write on
startup enabled, apply only touched command values.
---
MonitorControl/Info.plist | 2 +-
MonitorControl/Model/OtherDisplay.swift | 4 +++-
MonitorControlHelper/Info.plist | 2 +-
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index 72dff220..d6ecc336 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6430
+ 6436
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/Model/OtherDisplay.swift b/MonitorControl/Model/OtherDisplay.swift
index 1222c309..35a78bdb 100644
--- a/MonitorControl/Model/OtherDisplay.swift
+++ b/MonitorControl/Model/OtherDisplay.swift
@@ -114,7 +114,8 @@ class OtherDisplay: Display {
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("- Command status: %{public}@", type: .info, self.readPrefAsBool(key: .isTouched, for: command) ? "Touched" : "Untouched")
+ if self.readPrefAsBool(key: .isTouched, for: command), 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)
}
@@ -390,6 +391,7 @@ class OtherDisplay: Display {
} else {
success = self.ddc?.write(command: command.rawValue, value: value, errorRecoveryWaitTime: 2000) ?? false
}
+ self.savePref(true, key: PrefKey.isTouched, for: command) // We deliberatly consider the value tuched no matter if the call succeeded
}
}
return success
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index 449dd640..dc2d2044 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6430
+ 6436
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From 2b22c4d25574f68eaf4356ac3342eefc509b62eb Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Tue, 5 Oct 2021 21:43:02 +0200
Subject: [PATCH 13/18] Fixed custom shortcut keys going berserk when menu is
opened during a keyrepeat streak.
---
MonitorControl/Support/MenuHandler.swift | 1 +
1 file changed, 1 insertion(+)
diff --git a/MonitorControl/Support/MenuHandler.swift b/MonitorControl/Support/MenuHandler.swift
index 61b10f29..7a53f096 100644
--- a/MonitorControl/Support/MenuHandler.swift
+++ b/MonitorControl/Support/MenuHandler.swift
@@ -21,6 +21,7 @@ class MenuHandler: NSMenu, NSMenuDelegate {
func menuWillOpen(_: NSMenu) {
self.updateMenuRelevantDisplay()
+ app.keyboardShortcuts.disengage()
}
func updateMenus(dontClose: Bool = false) {
From 45d4752749e349774afff1670fdfbcbb74b557a5 Mon Sep 17 00:00:00 2001
From: waydabber <37590873+waydabber@users.noreply.github.com>
Date: Tue, 5 Oct 2021 21:52:36 +0200
Subject: [PATCH 14/18] Refactoring + avoid creating multiple AVAudioPlayer on
multi monitor setups for no good reason.
---
MonitorControl/Info.plist | 2 +-
MonitorControl/Model/OtherDisplay.swift | 15 ---------------
MonitorControl/Support/AppDelegate.swift | 15 +++++++++++++++
.../Support/KeyboardShortcutsManager.swift | 4 ++--
MonitorControl/Support/MediaKeyTapManager.swift | 4 ++--
MonitorControlHelper/Info.plist | 2 +-
6 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist
index d6ecc336..c158f204 100644
--- a/MonitorControl/Info.plist
+++ b/MonitorControl/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6436
+ 6440
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/MonitorControl/Model/OtherDisplay.swift b/MonitorControl/Model/OtherDisplay.swift
index 35a78bdb..5120e21e 100644
--- a/MonitorControl/Model/OtherDisplay.swift
+++ b/MonitorControl/Model/OtherDisplay.swift
@@ -1,6 +1,5 @@
// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others
-import AVFoundation
import Cocoa
import IOKit
import os.log
@@ -13,7 +12,6 @@ class OtherDisplay: Display {
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) {
@@ -488,19 +486,6 @@ class OtherDisplay: Display {
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/Support/AppDelegate.swift b/MonitorControl/Support/AppDelegate.swift
index 92c075bc..fcb86658 100644
--- a/MonitorControl/Support/AppDelegate.swift
+++ b/MonitorControl/Support/AppDelegate.swift
@@ -1,5 +1,6 @@
// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others
+import AVFoundation
import Cocoa
import Foundation
import MediaKeyTap
@@ -19,6 +20,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
var sleepID: Int = 0 // sleep event ID
var safeMode = false
var jobRunning = false
+ var audioPlayer: AVAudioPlayer?
let updaterController = SPUStandardUpdaterController(startingUpdater: false, updaterDelegate: UpdaterDelegate(), userDriverDelegate: nil)
var preferencePaneStyle: Preferences.Style {
@@ -299,4 +301,17 @@ class AppDelegate: NSObject, NSApplicationDelegate {
return true
}
}
+
+ 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)
+ }
+ }
}
diff --git a/MonitorControl/Support/KeyboardShortcutsManager.swift b/MonitorControl/Support/KeyboardShortcutsManager.swift
index cd937ad2..8de4ac8f 100644
--- a/MonitorControl/Support/KeyboardShortcutsManager.swift
+++ b/MonitorControl/Support/KeyboardShortcutsManager.swift
@@ -146,7 +146,7 @@ class KeyboardShortcutsManager {
if isPressed {
display.stepVolume(isUp: isUp, isSmallIncrement: prefs.bool(forKey: PrefKey.useFineScaleVolume.rawValue))
} else if !wasNotIsPressedVolumeSentAlready, !display.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) {
- display.playVolumeChangedSound()
+ app.playVolumeChangedSound()
wasNotIsPressedVolumeSentAlready = true
}
}
@@ -162,7 +162,7 @@ class KeyboardShortcutsManager {
if let display = display as? OtherDisplay {
display.toggleMute()
if !wasNotIsPressedVolumeSentAlready, display.readPrefAsInt(for: .audioMuteScreenBlank) != 1, !display.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) {
- display.playVolumeChangedSound()
+ app.playVolumeChangedSound()
wasNotIsPressedVolumeSentAlready = true
}
}
diff --git a/MonitorControl/Support/MediaKeyTapManager.swift b/MonitorControl/Support/MediaKeyTapManager.swift
index f2eaace4..f6a446ae 100644
--- a/MonitorControl/Support/MediaKeyTapManager.swift
+++ b/MonitorControl/Support/MediaKeyTapManager.swift
@@ -94,7 +94,7 @@ class MediaKeyTapManager: MediaKeyTapDelegate {
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()
+ app.playVolumeChangedSound()
wasNotIsPressedVolumeSentAlready = true
}
}
@@ -104,7 +104,7 @@ class MediaKeyTapManager: MediaKeyTapDelegate {
if isPressed {
display.stepVolume(isUp: mediaKey == .volumeUp, isSmallIncrement: isSmallIncrement)
} else if !wasNotIsPressedVolumeSentAlready, !display.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) {
- display.playVolumeChangedSound()
+ app.playVolumeChangedSound()
wasNotIsPressedVolumeSentAlready = true
}
}
diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist
index dc2d2044..c1793f6f 100644
--- a/MonitorControlHelper/Info.plist
+++ b/MonitorControlHelper/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 6436
+ 6440
LSApplicationCategoryType
public.app-category.utilities
LSBackgroundOnly
From 43f67869f4aec949a78b69468b7518f26770d5f2 Mon Sep 17 00:00:00 2001
From: Istvan T <37590873+waydabber@users.noreply.github.com>
Date: Wed, 6 Oct 2021 20:16:37 +0200
Subject: [PATCH 15/18] Updated screenshot
---
.github/screenshot.png | Bin 1100853 -> 1382301 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/.github/screenshot.png b/.github/screenshot.png
index 671762b380171d642deac71bd88322a3ce323174..700cefdccff47f1fc3fb1fef7239d57eec21427a 100644
GIT binary patch
literal 1382301
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