1
0
mirror of https://github.com/Toxblh/MTMR.git synced 2026-01-10 17:08:39 +00:00

fix broken brightness buttons; consolidated brightness control

This commit is contained in:
Serg 2018-10-14 10:54:19 +07:00
parent b368a21f62
commit c989037e54
5 changed files with 67 additions and 30 deletions

View File

@ -18,6 +18,7 @@
36C2ECDD207C723B003CDA33 /* ParseConfigTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36C2ECDC207C723B003CDA33 /* ParseConfigTests.swift */; };
36C2ECDE207C82DE003CDA33 /* ItemsParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36C2ECDA207C3FE7003CDA33 /* ItemsParsing.swift */; };
36C2ECE0207CB1B0003CDA33 /* defaultPreset.json in Resources */ = {isa = PBXBuildFile; fileRef = 36C2ECDF207CB1B0003CDA33 /* defaultPreset.json */; };
36DD28E32172EA34001FD6AD /* SupportBrightness.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36DD28E22172EA34001FD6AD /* SupportBrightness.swift */; };
60173D3E20C0031B002C305F /* LaunchAtLoginController.m in Sources */ = {isa = PBXBuildFile; fileRef = 60173D3D20C0031B002C305F /* LaunchAtLoginController.m */; };
6027D1B92080E52A004FFDC7 /* BrightnessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6027D1B72080E52A004FFDC7 /* BrightnessViewController.swift */; };
6027D1BA2080E52A004FFDC7 /* VolumeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6027D1B82080E52A004FFDC7 /* VolumeViewController.swift */; };
@ -87,6 +88,7 @@
36C2ECDA207C3FE7003CDA33 /* ItemsParsing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemsParsing.swift; sourceTree = "<group>"; };
36C2ECDC207C723B003CDA33 /* ParseConfigTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseConfigTests.swift; sourceTree = "<group>"; };
36C2ECDF207CB1B0003CDA33 /* defaultPreset.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = defaultPreset.json; sourceTree = "<group>"; };
36DD28E22172EA34001FD6AD /* SupportBrightness.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportBrightness.swift; sourceTree = "<group>"; };
60173D3C20C0031B002C305F /* LaunchAtLoginController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LaunchAtLoginController.h; sourceTree = "<group>"; };
60173D3D20C0031B002C305F /* LaunchAtLoginController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LaunchAtLoginController.m; sourceTree = "<group>"; };
6027D1B72080E52A004FFDC7 /* BrightnessViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BrightnessViewController.swift; sourceTree = "<group>"; };
@ -220,6 +222,7 @@
B05600D22083E9BB00EB218D /* CustomSlider.swift */,
36A778BD20A6C27100B38714 /* GeneralExtensions.swift */,
B0F3112420C9E35F0076BB88 /* SupportNSTouchBar.swift */,
36DD28E22172EA34001FD6AD /* SupportBrightness.swift */,
);
path = MTMR;
sourceTree = "<group>";
@ -444,6 +447,7 @@
B0F3112520C9E35F0076BB88 /* SupportNSTouchBar.swift in Sources */,
6042B6AA2083E27000C525C8 /* DeprecatedCarbonAPI.c in Sources */,
B09EB1E4207C082000D5C1E0 /* HapticFeedback.swift in Sources */,
36DD28E32172EA34001FD6AD /* SupportBrightness.swift in Sources */,
B08173272135F02B005D4908 /* NightShiftBarItem.swift in Sources */,
60F7D454208CC31400ABF5D2 /* InputSourceBarItem.swift in Sources */,
36A778BE20A6C27100B38714 /* GeneralExtensions.swift in Sources */,

View File

@ -50,12 +50,16 @@ class SupportedTypesHolder {
"brightnessUp": { _ in
let imageParameter = GeneralParameter.image(source: #imageLiteral(resourceName: "brightnessUp"))
return (item: .staticButton(title: ""), action: .keyPress(keycode: 144), longAction: .none, parameters: [.image: imageParameter])
return (item: .staticButton(title: ""), action: .custom(closure: {
sharedBrightnessController.increase()
}), longAction: .none, parameters: [.image: imageParameter])
},
"brightnessDown": { _ in
let imageParameter = GeneralParameter.image(source: #imageLiteral(resourceName: "brightnessDown"))
return (item: .staticButton(title: ""), action: .keyPress(keycode: 145), longAction: .none, parameters: [.image: imageParameter])
return (item: .staticButton(title: ""), action: .custom(closure: {
sharedBrightnessController.decrease()
}), longAction: .none, parameters: [.image: imageParameter])
},
"illuminationUp": { _ in

View File

@ -60,9 +60,9 @@ class ScrollViewItem: NSCustomTouchBarItem, NSGestureRecognizerDelegate {
case .changed:
if (((position-threefingersPrev) > 15) || ((threefingersPrev-position) > 15)) {
if position > threefingersPrev {
GenericKeyPress(keyCode: CGKeyCode(144)).send()
sharedBrightnessController.increase()
} else if position < threefingersPrev {
GenericKeyPress(keyCode: CGKeyCode(145)).send()
sharedBrightnessController.decrease()
}
threefingersPrev = position
}

View File

@ -0,0 +1,52 @@
import Foundation
public let sharedBrightnessController: BrightnessController = {
if #available(OSX 10.13, *) {
return CoreDisplayBrightnessController()
} else {
return IOServiceBrightnessController()
}
}()
public protocol BrightnessController: class {
var brightness: Float { get set }
}
public extension BrightnessController {
func increase() {
brightness += 0.1
}
func decrease() {
brightness -= 0.1
}
}
@available(OSX 10.13, *)
private class CoreDisplayBrightnessController : BrightnessController {
var brightness: Float {
get {
return Float(CoreDisplay_Display_GetUserBrightness(0))
}
set {
CoreDisplay_Display_SetUserBrightness(0, Double(newValue));
}
}
}
private class IOServiceBrightnessController : BrightnessController {
var brightness: Float {
get {
var level: Float32 = 0.5
let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect"))
IODisplayGetFloatParameter(service, 0, kIODisplayBrightnessKey as CFString, &level)
return Float(level)
}
set {
let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect"))
IODisplaySetFloatParameter(service, 1, kIODisplayBrightnessKey as CFString, newValue)
IOObjectRelease(service)
}
}
}

View File

@ -18,7 +18,7 @@ class BrightnessViewController: NSCustomTouchBarItem {
sliderItem.action = #selector(BrightnessViewController.sliderValueChanged(_:))
sliderItem.minValue = 0.0
sliderItem.maxValue = 100.0
sliderItem.floatValue = getBrightness() * 100
sliderItem.floatValue = sharedBrightnessController.brightness * 100
self.view = sliderItem
@ -36,37 +36,14 @@ class BrightnessViewController: NSCustomTouchBarItem {
@objc func updateBrightnessSlider() {
DispatchQueue.main.async {
self.sliderItem.floatValue = self.getBrightness() * 100
self.sliderItem.floatValue = sharedBrightnessController.brightness * 100
}
}
@objc func sliderValueChanged(_ sender: Any) {
if let sliderItem = sender as? NSSlider {
setBrightness(level: Float32(sliderItem.intValue)/100.0)
sharedBrightnessController.brightness = sliderItem.floatValue / 100.0
}
}
private func getBrightness() -> Float32 {
if #available(OSX 10.13, *) {
return Float32(CoreDisplay_Display_GetUserBrightness(0));
} else {
var level: Float32 = 0.5
let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect"))
IODisplayGetFloatParameter(service, 0, kIODisplayBrightnessKey as CFString, &level)
return level
}
}
private func setBrightness(level: Float) {
if #available(OSX 10.13, *) {
CoreDisplay_Display_SetUserBrightness(0, Double(level));
} else {
let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect"))
IODisplaySetFloatParameter(service, 1, kIODisplayBrightnessKey as CFString, level)
IOObjectRelease(service)
}
}
}