Как достать предмет в центре управления 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!
  }
}
Другие вопросы по тегам