Integruję aplikację GTK # z systemem Mac OS X. GTK na Mac OS X to otoki na niektórych podstawach Cocoa i Carbon. Mamy pewne specyficzne dla platformy rzeczy bezpośrednio za pomocą API Carbon Global API (jest bardziej nisko-poziomowy i elastyczny niż Cocoa, i nie musimy być 64-bitowymi).Programowo otwarte menu Pomocy Macintosha
Wygląda na to, że GTK przechwytuje wszystkie zdarzenia na klawiaturze, zanim Carbon wywoła je jako polecenia. Ma to sens, ponieważ nie ma mapowania poleceń węglowych do świata GTK. Zasadniczo nie stanowi to problemu, ponieważ mamy globalną procedurę obsługi zdarzeń i wysyłamy wszystko za pośrednictwem naszego własnego systemu poleceń. Jednak wydaje się, że to uniemożliwia Cmd-? od otwierania menu wyszukiwania Pomocy i nie mogę znaleźć sposobu, aby zrobić to programowo.
funkcja menuSelect menu menedżera jest obiecujący, ale nie zorientowali się, sposób określenia współrzędnych automatycznie, iz jakiegoś powodu to działa tylko wtedy, kiedy uderzył w kombinacji dwa razy ...
Alternatywnie, sposób wysłać Cmd-? naciśnięcie klawisza do obsługi poleceń systemu Carbon lub zsyntetyzowanie zdarzenia polecenia byłoby dobre, ale nie miałem szczęścia w tym obszarze.
ProcessHICommand Carbon nie jest jakiekolwiek wykorzystanie bez ID poleceń i nie mogę dowiedzieć się, co to jest (jeśli istnieje)
chodzi kakao, mogę zdobyć w NSWindow i InterpretKeyEvents zadzwonić, ale Nie miałem szczęścia w syntezowaniu NSEvent - po prostu pika. Impreza używam jest
var evt = NSEvent.KeyEvent (NSEventType.KeyDown, System.Drawing.PointF.Empty,
NSEventModifierMask.CommandKeyMask | NSEventModifierMask.ShiftKeyMask,
0, win.WindowNumber, NSGraphicsContext.CurrentContext, "?", "?",
false, (ushort) keycode);
keyCode jest określana na podstawie mapy klawiatury GTK być 44. potwierdziły, że keycode była poprawna przy użyciu zwykłego Monoman (Cocoa) APP ale InterpretKeyEvents nie działa ze zdarzeniem, które w aplikacja albo. I nie mogę znaleźć żadnego selektora powiązanego z poleceniem.
Użytkownicy pytali o Cmd-Shift-? keybinding, aby otworzyć menu wyszukiwania Pomocy. W jakiś sposób pętla zdarzeń GTK uniemożliwia działanie wbudowanej obsługi. –
Czy podczas imprezy kakaowej próbowałeś użyć "/" zamiast "?". –
Na marginesie, twoje stwierdzenie, że węgiel jest "bardziej niskopoziomowy i elastyczny niż kakao" jest niepoprawne. Carbon to całkowicie oddzielny interfejs API, który został zaprojektowany z myślą o współpracy z systemem Mac OS 8/9. Jest on przestarzały i źle utrzymany i nie jest "pod" kakao w żaden sposób. Kakao jest w rzeczywistości dużo starsze niż węgiel, mimo że na pierwszy rzut oka jest nowocześniejsze. Powinieneś naprawdę współpracować z Cocoa zamiast Carbon. –