Pertanyaan Bagaimana mendapatkan item di pusat kendali Touch Bar di sebelah kanan?


Aplikasi TouchSwitcher menambahkan item di samping item lightscreen dan volume: https://hazeover.com/touchswitcher.html enter image description here

Apakah ada solusi untuk menampilkan item ke strip kontrol di bagian kanan bilah sentuh?

Saya tidak dapat menemukan bantuan dalam dokumentasi resmi tentang hal itu ... Tolong bantu aku !


14
2017-12-01 20:55


asal


Jawaban:


Setelah mendekompilasi, saya menemukan beberapa API dalam kerangka yang disebut DFRFoundation yang terletak di bawah / System / Library / PrivateFrameworks, dan metode terkait DFRElementSetControlStripPresenceForIdentifier. Saya merasa cukup sulit untuk mendapatkan lebih jauh, jadi saya menjawab di sini hanya untuk memberi tahu Anda bahwa API untuk ini adalah dalam kerangka pribadi. Semoga seseorang mengungkapkan rahasia suatu hari nanti.


4
2018-01-27 08:41



Ini apa yang saya gunakan. Lulus NSView dan pengenal pilihan Anda ke controlStrippify() fungsi. Upaya saya melakukan hal yang sama dengan menggunakan Swift telah mengakibatkan crash, port selamat datang :). Inspirasi dari 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!
  }
}

4
2017-10-06 12:01