Rework playback shortcuts again.

CQTexperiment
Dzmitry Neviadomski 2021-02-19 08:23:13 +03:00
parent 97cc1e9845
commit 85e27e7496
2 changed files with 54 additions and 50 deletions

View File

@ -8,6 +8,8 @@
#import "PlaylistView.h"
#import <Carbon/Carbon.h>
#import "BlankZeroFormatter.h"
#import "IndexFormatter.h"
#import "PlaylistEntry.h"
@ -154,37 +156,44 @@
return tableViewMenu;
}
- (void)keyDown:(NSEvent *)e {
unsigned int modifiers =
[e modifierFlags] & (NSEventModifierFlagCommand | NSEventModifierFlagShift |
NSEventModifierFlagControl | NSEventModifierFlagOption);
NSString *characters = [e characters];
unichar c;
if ([characters length] != 1) {
[super keyDown:e];
- (void)keyDown:(NSEvent *)event {
BOOL modifiersUsed =([event modifierFlags] & (NSEventModifierFlagShift |
NSEventModifierFlagControl |
NSEventModifierFlagOption |
NSEventModifierFlagCommand)) ? YES : NO;
if (modifiersUsed) {
[super keyDown:event];
return;
}
c = [characters characterAtIndex:0];
if (modifiers == 0 &&
(c == NSDeleteCharacter || c == NSBackspaceCharacter || c == NSDeleteFunctionKey)) {
[playlistController remove:self];
} else if (modifiers == 0 && c == ' ') {
[playbackController playPauseResume:self];
} else if (modifiers == 0 && (c == NSEnterCharacter || c == NSCarriageReturnCharacter)) {
[playbackController play:self];
} else if (modifiers == 0 && c == NSLeftArrowFunctionKey) {
[playbackController eventSeekBackward:self];
} else if (modifiers == 0 && c == NSRightArrowFunctionKey) {
[playbackController eventSeekForward:self];
}
// Escape
else if (modifiers == 0 && c == 0x1b) {
[playlistController clearFilterPredicate:self];
} else {
[super keyDown:e];
switch ([event keyCode]) {
case kVK_Space:
[playbackController playPauseResume:self];
break;
case kVK_Escape:
[playlistController clearFilterPredicate:self];
break;
case kVK_Delete:
case kVK_ForwardDelete:
[playlistController remove:self];
break;
case kVK_LeftArrow:
[playbackController eventSeekBackward:self];
break;
case kVK_RightArrow:
[playbackController eventSeekForward:self];
break;
case kVK_Return:
[playbackController play:self];
break;
default:
[super keyDown:event];
break;
}
}

View File

@ -8,6 +8,8 @@
#import "MiniWindow.h"
#import <Carbon/Carbon.h>
@implementation MiniWindow
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSWindowStyleMask)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation
@ -32,50 +34,43 @@
// Do nothing!
}
- (void)keyDown:(NSEvent *)e {
BOOL modifiersUsed =
([e modifierFlags] & (NSEventModifierFlagShift |
NSEventModifierFlagControl |
NSEventModifierFlagOption |
NSEventModifierFlagCommand)) ? YES : NO;
NSString *characters = [e charactersIgnoringModifiers];
if (modifiersUsed || [characters length] != 1)
{
[super keyDown:e];
- (void)keyDown:(NSEvent *)event {
BOOL modifiersUsed =([event modifierFlags] & (NSEventModifierFlagShift |
NSEventModifierFlagControl |
NSEventModifierFlagOption |
NSEventModifierFlagCommand)) ? YES : NO;
if (modifiersUsed) {
[super keyDown:event];
return;
}
unichar c = [characters characterAtIndex:0];
switch (c) {
case 0x20: // Spacebar
switch ([event keyCode]) {
case kVK_Space:
[playbackController playPauseResume:self];
break;
case NSEnterCharacter:
case NSCarriageReturnCharacter:
case kVK_Return:
[playbackController play:self];
break;
case NSLeftArrowFunctionKey:
case kVK_LeftArrow:
[playbackController eventSeekBackward:self];
break;
case NSRightArrowFunctionKey:
case kVK_RightArrow:
[playbackController eventSeekForward:self];
break;
case NSUpArrowFunctionKey:
case kVK_UpArrow:
[playbackController volumeUp:self];
break;
case NSDownArrowFunctionKey:
case kVK_DownArrow:
[playbackController volumeDown:self];
break;
default:
[super keyDown:e];
[super keyDown:event];
break;
}
}