mirror of
https://github.com/clementine-player/Clementine
synced 2024-12-16 19:31:02 +01:00
Support more shortcut keys on mac.
This commit is contained in:
parent
43575218a2
commit
077dfd46b0
@ -102,10 +102,29 @@ class MacGlobalShortcutBackendPrivate : boost::noncopyable {
|
|||||||
private:
|
private:
|
||||||
static QKeySequence GetSequence(NSEvent* event) {
|
static QKeySequence GetSequence(NSEvent* event) {
|
||||||
NSString* str = [event charactersIgnoringModifiers];
|
NSString* str = [event charactersIgnoringModifiers];
|
||||||
NSString* lower = [str lowercaseString];
|
NSString* upper = [str uppercaseString];
|
||||||
const char* chars = [lower UTF8String];
|
const char* chars = [upper UTF8String];
|
||||||
NSUInteger modifiers = [event modifierFlags];
|
NSUInteger modifiers = [event modifierFlags];
|
||||||
int key = Qt::Key_A + chars[0] - 'a'; // >.>
|
int key = 0;
|
||||||
|
unsigned char c = chars[0];
|
||||||
|
switch (c) {
|
||||||
|
case 0x1b: key = Qt::Key_Escape; break;
|
||||||
|
case 0x09: key = Qt::Key_Tab; break;
|
||||||
|
case 0x0d: key = Qt::Key_Return; break;
|
||||||
|
case 0x08: key = Qt::Key_Backspace; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == 0) {
|
||||||
|
if (c >= 0x20 && c <= 0x7e) { // ASCII from space to ~
|
||||||
|
key = c;
|
||||||
|
} else {
|
||||||
|
key = MapFunctionKey([event keyCode]);
|
||||||
|
if (key == 0) {
|
||||||
|
return QKeySequence();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (modifiers & NSShiftKeyMask) {
|
if (modifiers & NSShiftKeyMask) {
|
||||||
key += Qt::SHIFT;
|
key += Qt::SHIFT;
|
||||||
}
|
}
|
||||||
@ -127,6 +146,65 @@ class MacGlobalShortcutBackendPrivate : boost::noncopyable {
|
|||||||
backend_->KeyPressed(sequence);
|
backend_->KeyPressed(sequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int MapFunctionKey(int keycode) {
|
||||||
|
switch (keycode) {
|
||||||
|
// Function keys
|
||||||
|
case NSInsertFunctionKey: return Qt::Key_Insert;
|
||||||
|
case NSDeleteFunctionKey: return Qt::Key_Delete;
|
||||||
|
case NSPauseFunctionKey: return Qt::Key_Pause;
|
||||||
|
case NSPrintFunctionKey: return Qt::Key_Print;
|
||||||
|
case NSSysReqFunctionKey: return Qt::Key_SysReq;
|
||||||
|
case NSHomeFunctionKey: return Qt::Key_Home;
|
||||||
|
case NSEndFunctionKey: return Qt::Key_End;
|
||||||
|
case NSLeftArrowFunctionKey: return Qt::Key_Left;
|
||||||
|
case NSUpArrowFunctionKey: return Qt::Key_Up;
|
||||||
|
case NSRightArrowFunctionKey: return Qt::Key_Right;
|
||||||
|
case NSDownArrowFunctionKey: return Qt::Key_Down;
|
||||||
|
case NSPageUpFunctionKey: return Qt::Key_PageUp;
|
||||||
|
case NSPageDownFunctionKey: return Qt::Key_PageDown;
|
||||||
|
case NSScrollLockFunctionKey: return Qt::Key_ScrollLock;
|
||||||
|
case NSF1FunctionKey: return Qt::Key_F1;
|
||||||
|
case NSF2FunctionKey: return Qt::Key_F2;
|
||||||
|
case NSF3FunctionKey: return Qt::Key_F3;
|
||||||
|
case NSF4FunctionKey: return Qt::Key_F4;
|
||||||
|
case NSF5FunctionKey: return Qt::Key_F5;
|
||||||
|
case NSF6FunctionKey: return Qt::Key_F6;
|
||||||
|
case NSF7FunctionKey: return Qt::Key_F7;
|
||||||
|
case NSF8FunctionKey: return Qt::Key_F8;
|
||||||
|
case NSF9FunctionKey: return Qt::Key_F9;
|
||||||
|
case NSF10FunctionKey: return Qt::Key_F10;
|
||||||
|
case NSF11FunctionKey: return Qt::Key_F11;
|
||||||
|
case NSF12FunctionKey: return Qt::Key_F12;
|
||||||
|
case NSF13FunctionKey: return Qt::Key_F13;
|
||||||
|
case NSF14FunctionKey: return Qt::Key_F14;
|
||||||
|
case NSF15FunctionKey: return Qt::Key_F15;
|
||||||
|
case NSF16FunctionKey: return Qt::Key_F16;
|
||||||
|
case NSF17FunctionKey: return Qt::Key_F17;
|
||||||
|
case NSF18FunctionKey: return Qt::Key_F18;
|
||||||
|
case NSF19FunctionKey: return Qt::Key_F19;
|
||||||
|
case NSF20FunctionKey: return Qt::Key_F20;
|
||||||
|
case NSF21FunctionKey: return Qt::Key_F21;
|
||||||
|
case NSF22FunctionKey: return Qt::Key_F22;
|
||||||
|
case NSF23FunctionKey: return Qt::Key_F23;
|
||||||
|
case NSF24FunctionKey: return Qt::Key_F24;
|
||||||
|
case NSF25FunctionKey: return Qt::Key_F25;
|
||||||
|
case NSF26FunctionKey: return Qt::Key_F26;
|
||||||
|
case NSF27FunctionKey: return Qt::Key_F27;
|
||||||
|
case NSF28FunctionKey: return Qt::Key_F28;
|
||||||
|
case NSF29FunctionKey: return Qt::Key_F29;
|
||||||
|
case NSF30FunctionKey: return Qt::Key_F30;
|
||||||
|
case NSF31FunctionKey: return Qt::Key_F31;
|
||||||
|
case NSF32FunctionKey: return Qt::Key_F32;
|
||||||
|
case NSF33FunctionKey: return Qt::Key_F33;
|
||||||
|
case NSF34FunctionKey: return Qt::Key_F34;
|
||||||
|
case NSF35FunctionKey: return Qt::Key_F35;
|
||||||
|
case NSMenuFunctionKey: return Qt::Key_Menu;
|
||||||
|
case NSHelpFunctionKey: return Qt::Key_Help;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
id global_monitor_;
|
id global_monitor_;
|
||||||
id local_monitor_;
|
id local_monitor_;
|
||||||
MacGlobalShortcutBackend* backend_;
|
MacGlobalShortcutBackend* backend_;
|
||||||
|
Loading…
Reference in New Issue
Block a user