Skip to content

Commit e0bcdf4

Browse files
Cubelrtirogerwang
authored andcommitted
fix: handle function key mask since macOS 12
1 parent 24f166d commit e0bcdf4

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/api/menuitem/menuitem_mac.mm

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,16 @@
138138
if (mask != 0) {
139139
std::stringstream s;
140140
std::vector<std::string> modifiers;
141-
if (mask & NSCommandKeyMask) modifiers.push_back("cmd");
142-
if (mask & NSControlKeyMask) modifiers.push_back("ctrl");
143-
if (mask & NSAlternateKeyMask) modifiers.push_back("alt");
144-
if (mask & NSShiftKeyMask) modifiers.push_back("shift");
141+
if (mask & NSEventModifierFlagCommand) modifiers.push_back("cmd");
142+
if (mask & NSEventModifierFlagControl) modifiers.push_back("ctrl");
143+
if (mask & NSEventModifierFlagOption) modifiers.push_back("alt");
144+
if (mask & NSEventModifierFlagShift) modifiers.push_back("shift");
145+
if (mask & NSEventModifierFlagFunction) modifiers.push_back("fn");
145146
std::copy(modifiers.begin(), modifiers.end(), std::ostream_iterator<std::string>(s, "+"));
146147
std::string str = s.str();
147-
str.erase(str.length()-1);
148+
if (str.length() > 0) {
149+
str.erase(str.length()-1);
150+
}
148151
options->SetString("modifiers", str);
149152
}
150153

@@ -210,15 +213,17 @@
210213
NSUInteger mask = 0;
211214
NSString* nsmodifiers = [NSString stringWithUTF8String:modifiers.c_str()].lowercaseString;
212215
if([nsmodifiers rangeOfString:@"shift"].location != NSNotFound)
213-
mask = mask|NSShiftKeyMask;
216+
mask = mask|NSEventModifierFlagShift;
214217
if([nsmodifiers rangeOfString:@"cmd"].location != NSNotFound
215218
|| [nsmodifiers rangeOfString:@"command"].location != NSNotFound
216219
|| [nsmodifiers rangeOfString:@"super"].location != NSNotFound)
217-
mask = mask|NSCommandKeyMask;
220+
mask = mask|NSEventModifierFlagCommand;
218221
if([nsmodifiers rangeOfString:@"alt"].location != NSNotFound)
219-
mask = mask|NSAlternateKeyMask;
222+
mask = mask|NSEventModifierFlagOption;
220223
if([nsmodifiers rangeOfString:@"ctrl"].location != NSNotFound)
221-
mask = mask|NSControlKeyMask;
224+
mask = mask|NSEventModifierFlagControl;
225+
if([nsmodifiers rangeOfString:@"fn"].location != NSNotFound)
226+
mask = mask|NSEventModifierFlagFunction;
222227
[menu_item_ setKeyEquivalentModifierMask:mask];
223228
}
224229

0 commit comments

Comments
 (0)