aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkoekeishiya <aasvi93@hotmail.com>2017-09-20 11:25:15 +0200
committerkoekeishiya <aasvi93@hotmail.com>2017-09-20 11:25:15 +0200
commitb2db3641d076ca3bbbb16beb4bb116f0aafe4c29 (patch)
treefc6fa53ed4685d9ddf275e230af1e1f1b429e02b
parent009f4df347aadc4f449f368c7f43ad75e720062c (diff)
downloadskhd-b2db3641d076ca3bbbb16beb4bb116f0aafe4c29.tar.gz
skhd-b2db3641d076ca3bbbb16beb4bb116f0aafe4c29.zip
#8 add fn modifier
Diffstat (limited to '')
-rw-r--r--src/hotkey.c14
-rw-r--r--src/hotkey.h64
-rw-r--r--src/parse.c2
-rw-r--r--src/tokenize.h2
4 files changed, 43 insertions, 39 deletions
diff --git a/src/hotkey.c b/src/hotkey.c
index 9e99064..f5229bb 100644
--- a/src/hotkey.c
+++ b/src/hotkey.c
@@ -84,17 +84,23 @@ compare_ctrl(struct hotkey *a, struct hotkey *b)
}
}
+internal bool
+compare_fn(struct hotkey *a, struct hotkey *b)
+{
+ return has_flags(a, Hotkey_Flag_Fn) == has_flags(b, Hotkey_Flag_Fn);
+}
+
bool same_hotkey(struct hotkey *a, struct hotkey *b)
{
return compare_cmd(a, b) &&
compare_shift(a, b) &&
compare_alt(a, b) &&
compare_ctrl(a, b) &&
+ compare_fn(a, b) &&
a->key == b->key;
}
-unsigned long
-hash_hotkey(struct hotkey *a)
+unsigned long hash_hotkey(struct hotkey *a)
{
return a->key;
}
@@ -163,4 +169,8 @@ void cgeventflags_to_hotkeyflags(CGEventFlags flags, struct hotkey *eventkey)
if(right) add_flags(eventkey, Hotkey_Flag_RControl);
if(!left && !right) add_flags(eventkey, Hotkey_Flag_Control);
}
+
+ if((flags & Event_Mask_Fn) == Event_Mask_Fn) {
+ add_flags(eventkey, Hotkey_Flag_Fn);
+ }
}
diff --git a/src/hotkey.h b/src/hotkey.h
index 297c674..40ea630 100644
--- a/src/hotkey.h
+++ b/src/hotkey.h
@@ -7,47 +7,41 @@
enum osx_event_mask
{
- Event_Mask_Alt = 0x00080000,
- Event_Mask_LAlt = 0x00000020,
- Event_Mask_RAlt = 0x00000040,
-
- Event_Mask_Shift = 0x00020000,
- Event_Mask_LShift = 0x00000002,
- Event_Mask_RShift = 0x00000004,
-
- Event_Mask_Cmd = 0x00100000,
- Event_Mask_LCmd = 0x00000008,
- Event_Mask_RCmd = 0x00000010,
-
- Event_Mask_Control = 0x00040000,
+ Event_Mask_Alt = 0x00080000,
+ Event_Mask_LAlt = 0x00000020,
+ Event_Mask_RAlt = 0x00000040,
+ Event_Mask_Shift = 0x00020000,
+ Event_Mask_LShift = 0x00000002,
+ Event_Mask_RShift = 0x00000004,
+ Event_Mask_Cmd = 0x00100000,
+ Event_Mask_LCmd = 0x00000008,
+ Event_Mask_RCmd = 0x00000010,
+ Event_Mask_Control = 0x00040000,
Event_Mask_LControl = 0x00000001,
Event_Mask_RControl = 0x00002000,
+ Event_Mask_Fn = kCGEventFlagMaskSecondaryFn,
};
enum hotkey_flag
{
- Hotkey_Flag_Alt = (1 << 0),
- Hotkey_Flag_LAlt = (1 << 1),
- Hotkey_Flag_RAlt = (1 << 2),
-
- Hotkey_Flag_Shift = (1 << 3),
- Hotkey_Flag_LShift = (1 << 4),
- Hotkey_Flag_RShift = (1 << 5),
-
- Hotkey_Flag_Cmd = (1 << 6),
- Hotkey_Flag_LCmd = (1 << 7),
- Hotkey_Flag_RCmd = (1 << 8),
-
- Hotkey_Flag_Control = (1 << 9),
- Hotkey_Flag_LControl = (1 << 10),
- Hotkey_Flag_RControl = (1 << 11),
-
- Hotkey_Flag_Passthrough = (1 << 12),
-
- Hotkey_Flag_Hyper = (Hotkey_Flag_Cmd |
- Hotkey_Flag_Alt |
- Hotkey_Flag_Shift |
- Hotkey_Flag_Control)
+ Hotkey_Flag_Alt = (1 << 0),
+ Hotkey_Flag_LAlt = (1 << 1),
+ Hotkey_Flag_RAlt = (1 << 2),
+ Hotkey_Flag_Shift = (1 << 3),
+ Hotkey_Flag_LShift = (1 << 4),
+ Hotkey_Flag_RShift = (1 << 5),
+ Hotkey_Flag_Cmd = (1 << 6),
+ Hotkey_Flag_LCmd = (1 << 7),
+ Hotkey_Flag_RCmd = (1 << 8),
+ Hotkey_Flag_Control = (1 << 9),
+ Hotkey_Flag_LControl = (1 << 10),
+ Hotkey_Flag_RControl = (1 << 11),
+ Hotkey_Flag_Fn = (1 << 12),
+ Hotkey_Flag_Passthrough = (1 << 13),
+ Hotkey_Flag_Hyper = (Hotkey_Flag_Cmd |
+ Hotkey_Flag_Alt |
+ Hotkey_Flag_Shift |
+ Hotkey_Flag_Control)
};
struct hotkey
diff --git a/src/parse.c b/src/parse.c
index 3899fb0..ab9add5 100644
--- a/src/parse.c
+++ b/src/parse.c
@@ -122,7 +122,7 @@ internal enum hotkey_flag modifier_flags_value[] =
Hotkey_Flag_Shift, Hotkey_Flag_LShift, Hotkey_Flag_RShift,
Hotkey_Flag_Cmd, Hotkey_Flag_LCmd, Hotkey_Flag_RCmd,
Hotkey_Flag_Control, Hotkey_Flag_LControl, Hotkey_Flag_RControl,
- Hotkey_Flag_Hyper,
+ Hotkey_Flag_Fn, Hotkey_Flag_Hyper,
};
internal uint32_t
diff --git a/src/tokenize.h b/src/tokenize.h
index ea770a8..4f87292 100644
--- a/src/tokenize.h
+++ b/src/tokenize.h
@@ -8,7 +8,7 @@ static const char *modifier_flags_str[] =
"shift", "lshift", "rshift",
"cmd", "lcmd", "rcmd",
"ctrl", "lctrl", "rctrl",
- "hyper",
+ "fn", "hyper",
};
static const char *literal_keycode_str[] =