Как достать предмет в центре управления Touch Bar справа?
Приложение TouchSwitcher добавляет элементы рядом со световым экраном и объемными элементами: https://hazeover.com/touchswitcher.html
Есть ли решение для отображения элемента в полосе управления в правой области сенсорной панели?
Я не могу найти никакой помощи в официальной документации об этом... Пожалуйста, помогите мне!
2 ответа
После декомпиляции я обнаружил некоторые API в платформе DFRFoundation, расположенной в /System/Library/PrivateFrameworks, и связанный метод DFRElementSetControlStripPresenceForIdentifier
, Мне довольно трудно идти дальше, поэтому я отвечу здесь только, чтобы сообщить вам, что API для этого находится в частной структуре. Надеюсь, кто-нибудь когда-нибудь раскроет секреты.
Вот что я использую. Передать NSView
и идентификатор по вашему выбору controlStrippify()
функция. Мои попытки сделать то же самое с помощью Swift привели к сбоям, приветствуются порты:). Вдохновение от https://github.com/a2/touch-baer.
@import Cocoa;
@import Foundation;
// See: https://github.com/a2/touch-baer
extern void DFRSystemModalShowsCloseBoxWhenFrontMost(BOOL);
extern void DFRElementSetControlStripPresenceForIdentifier(NSString *string, BOOL enabled);
@interface NSTouchBarItem ()
+ (void)addSystemTrayItem:(NSTouchBarItem *)item;
@end
@interface NSTouchBar ()
+ (void)presentSystemModalFunctionBar:(NSTouchBar *)touchBar systemTrayItemIdentifier:(NSString *)identifier;
@end
void controlStrippify(NSView *view, NSString *identifier) {
if (@available(macOS 10.12.2, *)) {
DFRSystemModalShowsCloseBoxWhenFrontMost(YES);
NSCustomTouchBarItem *touchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
touchBarItem.view = view;
[NSTouchBarItem addSystemTrayItem:touchBarItem];
DFRElementSetControlStripPresenceForIdentifier(identifier, YES);
} else {
// Fail!
}
}