mirror of
https://github.com/Toxblh/MTMR.git
synced 2026-01-11 01:18:39 +00:00
Gestures for Volume (2 fingers) and Brightness (3 fingers) on ScrollView
This commit is contained in:
parent
6674b5aef7
commit
3cdf44903b
@ -1,6 +1,8 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
class ScrollViewItem: NSCustomTouchBarItem {
|
class ScrollViewItem: NSCustomTouchBarItem, NSGestureRecognizerDelegate {
|
||||||
|
var twofingersPrev: CGFloat = 0.0
|
||||||
|
var threefingersPrev: CGFloat = 0.0
|
||||||
|
|
||||||
init(identifier: NSTouchBarItem.Identifier, items: [NSTouchBarItem]) {
|
init(identifier: NSTouchBarItem.Identifier, items: [NSTouchBarItem]) {
|
||||||
super.init(identifier: identifier)
|
super.init(identifier: identifier)
|
||||||
@ -11,10 +13,63 @@ class ScrollViewItem: NSCustomTouchBarItem {
|
|||||||
let scrollView = NSScrollView(frame: CGRect(origin: .zero, size: stackView.fittingSize))
|
let scrollView = NSScrollView(frame: CGRect(origin: .zero, size: stackView.fittingSize))
|
||||||
scrollView.documentView = stackView
|
scrollView.documentView = stackView
|
||||||
self.view = scrollView
|
self.view = scrollView
|
||||||
|
|
||||||
|
let twofingers = NSPanGestureRecognizer(target: self, action: #selector(twofingersHandler(_:)))
|
||||||
|
twofingers.allowedTouchTypes = .direct
|
||||||
|
twofingers.numberOfTouchesRequired = 2
|
||||||
|
self.view.addGestureRecognizer(twofingers)
|
||||||
|
|
||||||
|
let threefingers = NSPanGestureRecognizer(target: self, action: #selector(threefingersHandler(_:)))
|
||||||
|
threefingers.allowedTouchTypes = .direct
|
||||||
|
threefingers.numberOfTouchesRequired = 3
|
||||||
|
self.view.addGestureRecognizer(threefingers)
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc func twofingersHandler(_ sender: NSGestureRecognizer?) { // Volume
|
||||||
|
let position = (sender?.location(in: sender?.view).x)!
|
||||||
|
|
||||||
|
switch sender!.state {
|
||||||
|
case .began:
|
||||||
|
twofingersPrev = position
|
||||||
|
case .changed:
|
||||||
|
if (((position-twofingersPrev) > 10) || ((twofingersPrev-position) > 10)) {
|
||||||
|
if position > twofingersPrev {
|
||||||
|
HIDPostAuxKey(NX_KEYTYPE_SOUND_UP)
|
||||||
|
} else if position < twofingersPrev {
|
||||||
|
HIDPostAuxKey(NX_KEYTYPE_SOUND_DOWN)
|
||||||
|
}
|
||||||
|
twofingersPrev = position
|
||||||
|
}
|
||||||
|
case .ended:
|
||||||
|
twofingersPrev = 0.0
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func threefingersHandler(_ sender: NSGestureRecognizer?) { // Brightness
|
||||||
|
let position = (sender?.location(in: sender?.view).x)!
|
||||||
|
|
||||||
|
switch sender!.state {
|
||||||
|
case .began:
|
||||||
|
threefingersPrev = position
|
||||||
|
case .changed:
|
||||||
|
if (((position-threefingersPrev) > 15) || ((threefingersPrev-position) > 15)) {
|
||||||
|
if position > threefingersPrev {
|
||||||
|
GenericKeyPress(keyCode: CGKeyCode(144)).send()
|
||||||
|
} else if position < threefingersPrev {
|
||||||
|
GenericKeyPress(keyCode: CGKeyCode(145)).send()
|
||||||
|
}
|
||||||
|
threefingersPrev = position
|
||||||
|
}
|
||||||
|
case .ended:
|
||||||
|
threefingersPrev = 0.0
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user