diff --git a/src/keypress.h b/src/keypress.h index 12b743f..6a7220c 100644 --- a/src/keypress.h +++ b/src/keypress.h @@ -20,7 +20,8 @@ extern "C" MOD_META = kCGEventFlagMaskCommand, MOD_ALT = kCGEventFlagMaskAlternate, MOD_CONTROL = kCGEventFlagMaskControl, - MOD_SHIFT = kCGEventFlagMaskShift + MOD_SHIFT = kCGEventFlagMaskShift, + MOD_FUNCTION = kCGEventFlagMaskSecondaryFn } MMKeyFlags; extern MMKeyFlags flagBuffer; @@ -32,7 +33,8 @@ extern "C" MOD_META = Mod4Mask, MOD_ALT = Mod1Mask, MOD_CONTROL = ControlMask, - MOD_SHIFT = ShiftMask + MOD_SHIFT = ShiftMask, + MOD_FUNCTION = 0 }; typedef unsigned int MMKeyFlags; @@ -45,7 +47,8 @@ extern "C" /* MOD_ALT = 0, MOD_CONTROL = 0, MOD_SHIFT = 0, */ - MOD_META = MOD_WIN + MOD_META = MOD_WIN, + MOD_FUNCTION = 0 }; typedef unsigned int MMKeyFlags; diff --git a/src/macos/keypress.c b/src/macos/keypress.c index 81e5321..6a6e8cf 100644 --- a/src/macos/keypress.c +++ b/src/macos/keypress.c @@ -67,6 +67,9 @@ void toggleKeyCode(MMKeyCode code, const bool down, MMKeyFlags flags) { if (code == K_SHIFT || code == K_RIGHTSHIFT) { flags |= MOD_SHIFT; } + if (code == K_FUNCTION) { + flags |= MOD_FUNCTION; + } MMKeyFlags activeKeyFlags; if (down) { diff --git a/src/main.cc b/src/main.cc index 71c53a2..c1e6dee 100644 --- a/src/main.cc +++ b/src/main.cc @@ -365,6 +365,8 @@ int CheckKeyFlags(std::string &flagString, MMKeyFlags *flags) { *flags = MOD_CONTROL; } else if (flagString == "shift" || flagString == "right_shift") { *flags = MOD_SHIFT; + } else if (flagString == "fn") { + *flags = MOD_FUNCTION; } else if (flagString == "none") { *flags = MOD_NONE; } else {