Hallo,
ich beginne mich gerade in Objective C und die ganze Mac Welt einzuarbeiten. Als erstes Projekt möchte ich ein kleines Tool schreiben, dass das aktive Fenster via Shortcut auf halbe Bildschirmgröße setzt, damit man ganz einfach zwei Fenster nebeneinander hat, ohne sie mit der Maus extra anpassen zu müssen.
Ich habe gelesen, dass es mit Carbon möglich ist, globale Shortcuts abzufangen. Jedoch gehört die Zukunft Cocoa und ich habe einige Beispiele gefunden, mit denen es zumindest unter 10.6 auch mit Cocoa möglich sein sollte, so etwas zu realisieren.
Soweit funktioniert mein Code auch, jedoch nur wenn das Fenster meiner Anwendung nicht aktiv ist. Wenn meine Anwendung sich im Vordergrund befindet, werden die Key Events nicht an meine Anwendung übergeben.
Es wäre super, wenn ihr mal ein Auge über meinen Code werfen könntet. Ich bin für jeden Tipp sehr dankbar!
Alles anzeigen
ich beginne mich gerade in Objective C und die ganze Mac Welt einzuarbeiten. Als erstes Projekt möchte ich ein kleines Tool schreiben, dass das aktive Fenster via Shortcut auf halbe Bildschirmgröße setzt, damit man ganz einfach zwei Fenster nebeneinander hat, ohne sie mit der Maus extra anpassen zu müssen.
Ich habe gelesen, dass es mit Carbon möglich ist, globale Shortcuts abzufangen. Jedoch gehört die Zukunft Cocoa und ich habe einige Beispiele gefunden, mit denen es zumindest unter 10.6 auch mit Cocoa möglich sein sollte, so etwas zu realisieren.
Soweit funktioniert mein Code auch, jedoch nur wenn das Fenster meiner Anwendung nicht aktiv ist. Wenn meine Anwendung sich im Vordergrund befindet, werden die Key Events nicht an meine Anwendung übergeben.
Es wäre super, wenn ihr mal ein Auge über meinen Code werfen könntet. Ich bin für jeden Tipp sehr dankbar!
Quellcode
- - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
- [NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:
- ^(NSEvent*event)
- {
- int flags = [event modifierFlags];
- /*
- possible modifier keys:
- NSAlphaShiftKeyMask, NSShiftKeyMask, NSControlKeyMask, NSAlternateKeyMask, NSCommandKeyMask
- */
- int modKeyDown = flags & NSAlternateKeyMask;
- //NSLog(@"%@", event);
- if(modKeyDown)
- {
- NSAppleScript *aScript = nil;
- //NSLog(@"%@", script);
- switch ([event keyCode]) {
- case 124:
- NSLog(@"Right");
- aScript = [[NSAppleScript alloc] initWithSource: @"say \"right\""];
- break;
- case 123:
- NSLog(@"Left");
- aScript = [[NSAppleScript alloc] initWithSource: @"say \"left\""];
- break;
- case 126:
- NSLog(@"Up");
- aScript = [[NSAppleScript alloc] initWithSource: @"say \"up\""];
- break;
- case 125:
- NSLog(@"Down");
- aScript = [[NSAppleScript alloc] initWithSource: @"say \"down\""];
- break;
- default:
- break;
- }
- if(aScript) {
- [aScript executeAndReturnError:nil];
- }
- [aScript release];
- }
- }
- ];
- };