Frage

Ich habe diesen Code (unten) einen anpassbare Hot Key zu erstellen.

OSStatus MyHotKeyHandler(EventHandlerCallRef nextHandler,EventRef theEvent,void *userData)
{
    EventHotKeyID hkCom;
    GetEventParameter(theEvent,kEventParamDirectObject,typeEventHotKeyID,NULL,sizeof(hkCom),NULL,&hkCom);
    HotKeyController *controller = (HotKeyController *)userData;
    int l = hkCom.id;
    switch (l) {
        case 1: [controller->window makeKeyAndOrderFront:NSApp];  
            break;
        case 2: [controller->searchWindow makeKeyAndOrderFront:nil];
            break;
        case 3: [controller->entryWindow makeKeyAndOrderFront:nil];
            break;  
    }
    return noErr;
}

- (void)awakeFromNib
{
    //Register the Hotkeys
    EventHotKeyRef gMyHotKeyRef;
    EventHotKeyID gMyHotKeyID;
    EventTypeSpec eventType;
    eventType.eventClass=kEventClassKeyboard;
    eventType.eventKind=kEventHotKeyPressed;


    InstallApplicationEventHandler(&MyHotKeyHandler,1,&eventType,(void *)self,NULL);

    gMyHotKeyID.signature='htk1';
    gMyHotKeyID.id=1;
    if([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeMain"]!=-999) {
        RegisterEventHotKey([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeMain"], [[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyModifiersMain"], gMyHotKeyID, GetApplicationEventTarget(), 0, &gMyHotKeyRef);
    }

    gMyHotKeyID.signature='htk2';
    gMyHotKeyID.id=2;
    if([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeSearch"]!=-999) {
        RegisterEventHotKey([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeSearch"], [[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyModifiersSearch"], gMyHotKeyID, GetApplicationEventTarget(), 0, &gMyHotKeyRef);
    }

    gMyHotKeyID.signature='htk3';
    gMyHotKeyID.id=3;
    if([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeEntry"]!=-999) {
        RegisterEventHotKey([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeEntry"], [[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyModifiersEntry"], gMyHotKeyID, GetApplicationEventTarget(), 0, &gMyHotKeyRef);
    }

}

Aber der Code wurde gemacht, um den Hotkey Anpassbare über eine Popup-Box zu machen, wie würde ich es so machen, es würde funktionieren mit Verknüpfung Recorder Bereich oder Schaltfläche. In ihrem Beispiel Anwendung (von der Person, die den Code gemacht) sie verwendet, um ein Popup-Box an den Controller über eine Aktion verbunden, um den Hotkey und ein Textfeld mit einem NSUserDefaultsController es zur Anzeige verbunden zu wählen. Wie würde ich machen die Shortcut-Recorder Feld / Schaltfläche den Hotkey wählen, weil ich im Moment die Aktion und die Benutzer Deault-Controller eine Verbindung zu ihm, aber es funktioniert nicht (das heißt die Hotkey Arbeit machen). Wie würde der Code geändert werden muß, damit es funktioniert oder es tun, was zu tun ist, sollte?

War es hilfreich?

Lösung

Sie werden die keycombo vom SRRecorderControl erhalten müssen. Das hat die Modifikator-Flaggen und virtuelle Schlüssel-Code, die Sie in Ihrem Carbon-Event-Hot-Key verwenden werden. Vergessen Sie nicht die SRRecorderControl zu sagen, die Modifikator Flaggen von Cocoa Carbon zu übersetzen, bevor sie passieren RegisterEventHotKey.

Sie werden alle diese in der SRRecorderControl und SRCommon Header finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top