mirror of
https://github.com/Toxblh/MTMR.git
synced 2026-01-11 09:28:38 +00:00
Merge branch 'master' into align
# Conflicts: # MTMR/ItemsParsing.swift
This commit is contained in:
commit
ba753ff331
24
MTMR/Assets.xcassets/brightnessDown.imageset/Contents.json
vendored
Normal file
24
MTMR/Assets.xcassets/brightnessDown.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "brightnessDown.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
},
|
||||||
|
"properties" : {
|
||||||
|
"template-rendering-intent" : "template"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
MTMR/Assets.xcassets/brightnessDown.imageset/brightnessDown.png
vendored
Normal file
BIN
MTMR/Assets.xcassets/brightnessDown.imageset/brightnessDown.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.9 KiB |
24
MTMR/Assets.xcassets/brightnessUp.imageset/Contents.json
vendored
Normal file
24
MTMR/Assets.xcassets/brightnessUp.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "brightnessUp.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
},
|
||||||
|
"properties" : {
|
||||||
|
"template-rendering-intent" : "template"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
MTMR/Assets.xcassets/brightnessUp.imageset/brightnessUp.png
vendored
Normal file
BIN
MTMR/Assets.xcassets/brightnessUp.imageset/brightnessUp.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.2 KiB |
@ -44,8 +44,14 @@ class SupportedTypesHolder {
|
|||||||
typealias ParametersDecoder = (Decoder) throws ->(item: ItemType, action: ActionType, parameters: [GeneralParameters.CodingKeys: GeneralParameter])
|
typealias ParametersDecoder = (Decoder) throws ->(item: ItemType, action: ActionType, parameters: [GeneralParameters.CodingKeys: GeneralParameter])
|
||||||
private var supportedTypes: [String: ParametersDecoder] = [
|
private var supportedTypes: [String: ParametersDecoder] = [
|
||||||
"escape": { _ in return (item: .staticButton(title: "esc"), action: .keyPress(keycode: 53), parameters: [.align: .align(.left)]) },
|
"escape": { _ in return (item: .staticButton(title: "esc"), action: .keyPress(keycode: 53), parameters: [.align: .align(.left)]) },
|
||||||
"brightnessUp": { _ in return (item: .staticButton(title: "🔆"), action: .keyPress(keycode: 113), parameters: [:]) },
|
"brightnessUp": { _ in
|
||||||
"brightnessDown": { _ in return (item: .staticButton(title: "🔅"), action: .keyPress(keycode: 107), parameters: [:]) },
|
let imageParameter = GeneralParameter.image(source: #imageLiteral(resourceName: "brightnessUp"))
|
||||||
|
return (item: .staticButton(title: ""), action: .keyPress(keycode: 113), parameters: [.image: imageParameter])
|
||||||
|
},
|
||||||
|
"brightnessDown": { _ in
|
||||||
|
let imageParameter = GeneralParameter.image(source: #imageLiteral(resourceName: "brightnessDown"))
|
||||||
|
return (item: .staticButton(title: ""), action: .keyPress(keycode: 107), parameters: [.image: imageParameter])
|
||||||
|
},
|
||||||
"volumeDown": { _ in
|
"volumeDown": { _ in
|
||||||
let imageParameter = GeneralParameter.image(source: NSImage(named: .touchBarVolumeDownTemplate)!)
|
let imageParameter = GeneralParameter.image(source: NSImage(named: .touchBarVolumeDownTemplate)!)
|
||||||
return (item: .staticButton(title: ""), action: .hidKey(keycode: NX_KEYTYPE_SOUND_DOWN), parameters: [.image: imageParameter])
|
return (item: .staticButton(title: ""), action: .hidKey(keycode: NX_KEYTYPE_SOUND_DOWN), parameters: [.image: imageParameter])
|
||||||
|
|||||||
@ -16,6 +16,39 @@ class VolumeViewController: NSCustomTouchBarItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.view = sliderItem
|
self.view = sliderItem
|
||||||
|
|
||||||
|
var forPropertyAddress = AudioObjectPropertyAddress(
|
||||||
|
mSelector: kAudioHardwareServiceDeviceProperty_VirtualMasterVolume,
|
||||||
|
mScope: kAudioDevicePropertyScopeOutput,
|
||||||
|
mElement: kAudioObjectPropertyElementMaster)
|
||||||
|
|
||||||
|
addListenerBlock(listenerBlock: audioObjectPropertyListenerBlock,
|
||||||
|
onAudioObjectID: defaultDeviceID,
|
||||||
|
forPropertyAddress: &forPropertyAddress)
|
||||||
|
}
|
||||||
|
|
||||||
|
func addListenerBlock( listenerBlock: @escaping AudioObjectPropertyListenerBlock, onAudioObjectID: AudioObjectID, forPropertyAddress: UnsafePointer<AudioObjectPropertyAddress>) {
|
||||||
|
|
||||||
|
if (kAudioHardwareNoError != AudioObjectAddPropertyListenerBlock(onAudioObjectID, forPropertyAddress, nil, listenerBlock)) {
|
||||||
|
print("Error calling: AudioObjectAddPropertyListenerBlock") }
|
||||||
|
}
|
||||||
|
|
||||||
|
func audioObjectPropertyListenerBlock (numberAddresses: UInt32, addresses: UnsafePointer<AudioObjectPropertyAddress>) {
|
||||||
|
var index: UInt32 = 0
|
||||||
|
while index < numberAddresses {
|
||||||
|
let address: AudioObjectPropertyAddress = addresses[Int(index)]
|
||||||
|
switch address.mSelector {
|
||||||
|
case kAudioHardwareServiceDeviceProperty_VirtualMasterVolume:
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
self.sliderItem.floatValue = self.getInputGain() * 100
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
|
||||||
|
print("We didn't expect this!")
|
||||||
|
|
||||||
|
}
|
||||||
|
index += 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
@ -24,7 +57,7 @@ class VolumeViewController: NSCustomTouchBarItem {
|
|||||||
|
|
||||||
@objc func sliderValueChanged(_ sender: Any) {
|
@objc func sliderValueChanged(_ sender: Any) {
|
||||||
if let sliderItem = sender as? NSSlider {
|
if let sliderItem = sender as? NSSlider {
|
||||||
setInputGain(Float32(sliderItem.intValue)/100.0)
|
_ = setInputGain(Float32(sliderItem.intValue)/100.0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,13 +85,30 @@ class VolumeViewController: NSCustomTouchBarItem {
|
|||||||
|
|
||||||
private func setInputGain(_ volume: Float32) -> OSStatus {
|
private func setInputGain(_ volume: Float32) -> OSStatus {
|
||||||
var inputVolume: Float32 = volume
|
var inputVolume: Float32 = volume
|
||||||
|
|
||||||
|
if inputVolume == 0.0 {
|
||||||
|
_ = setMute( mute: 1)
|
||||||
|
} else {
|
||||||
|
_ = setMute( mute: 0)
|
||||||
|
}
|
||||||
|
|
||||||
let size: UInt32 = UInt32(MemoryLayout.size(ofValue: inputVolume))
|
let size: UInt32 = UInt32(MemoryLayout.size(ofValue: inputVolume))
|
||||||
var address: AudioObjectPropertyAddress = AudioObjectPropertyAddress()
|
var address: AudioObjectPropertyAddress = AudioObjectPropertyAddress()
|
||||||
address.mSelector = AudioObjectPropertySelector(kAudioHardwareServiceDeviceProperty_VirtualMasterVolume)
|
|
||||||
address.mScope = AudioObjectPropertyScope(kAudioDevicePropertyScopeOutput)
|
address.mScope = AudioObjectPropertyScope(kAudioDevicePropertyScopeOutput)
|
||||||
address.mElement = AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)
|
address.mElement = AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)
|
||||||
|
address.mSelector = AudioObjectPropertySelector(kAudioHardwareServiceDeviceProperty_VirtualMasterVolume)
|
||||||
return AudioObjectSetPropertyData(defaultDeviceID, &address, 0, nil, size, &inputVolume)
|
return AudioObjectSetPropertyData(defaultDeviceID, &address, 0, nil, size, &inputVolume)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func setMute( mute: Int) -> OSStatus {
|
||||||
|
var muteVal: Int = mute
|
||||||
|
var address: AudioObjectPropertyAddress = AudioObjectPropertyAddress()
|
||||||
|
address.mSelector = AudioObjectPropertySelector(kAudioDevicePropertyMute)
|
||||||
|
let size: UInt32 = UInt32(MemoryLayout.size(ofValue: muteVal))
|
||||||
|
address.mScope = AudioObjectPropertyScope(kAudioDevicePropertyScopeOutput)
|
||||||
|
address.mElement = AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)
|
||||||
|
return AudioObjectSetPropertyData(defaultDeviceID, &address, 0, nil, size, &muteVal)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class CustomSliderCell: NSSliderCell {
|
class CustomSliderCell: NSSliderCell {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user