aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkoekeishiya <aasvi93@hotmail.com>2017-09-23 22:20:54 +0200
committerkoekeishiya <aasvi93@hotmail.com>2017-09-23 22:20:54 +0200
commite13c87bb3d37ce19b8444cdfc0193c0b094350c9 (patch)
tree954957d64aa1c46fbb0b3824f4ffcbb2b66ad816
parenta32f469dc05755a3505c176ca45c8f5bbc05cbc9 (diff)
downloadskhd-e13c87bb3d37ce19b8444cdfc0193c0b094350c9.tar.gz
skhd-e13c87bb3d37ce19b8444cdfc0193c0b094350c9.zip
code cleanup
-rw-r--r--src/hotkey.c134
-rw-r--r--src/tokenize.c5
-rw-r--r--src/tokenize.h1
3 files changed, 53 insertions, 87 deletions
diff --git a/src/hotkey.c b/src/hotkey.c
index f5229bb..168d24b 100644
--- a/src/hotkey.c
+++ b/src/hotkey.c
@@ -28,60 +28,40 @@ fork_and_exec(char *command)
return true;
}
-internal bool
-compare_cmd(struct hotkey *a, struct hotkey *b)
-{
- if(has_flags(a, Hotkey_Flag_Cmd)) {
- return (has_flags(b, Hotkey_Flag_LCmd) ||
- has_flags(b, Hotkey_Flag_RCmd) ||
- has_flags(b, Hotkey_Flag_Cmd));
- } else {
- return ((has_flags(a, Hotkey_Flag_LCmd) == has_flags(b, Hotkey_Flag_LCmd)) &&
- (has_flags(a, Hotkey_Flag_RCmd) == has_flags(b, Hotkey_Flag_RCmd)) &&
- (has_flags(a, Hotkey_Flag_Cmd) == has_flags(b, Hotkey_Flag_Cmd)));
- }
-}
-
-internal bool
-compare_shift(struct hotkey *a, struct hotkey *b)
+#define LRMOD_ALT 0
+#define LRMOD_CMD 6
+#define LRMOD_CTRL 9
+#define LRMOD_SHIFT 3
+#define LMOD_OFFS 1
+#define RMOD_OFFS 2
+
+internal uint32_t cgevent_lrmod_flag[] =
{
- if(has_flags(a, Hotkey_Flag_Shift)) {
- return (has_flags(b, Hotkey_Flag_LShift) ||
- has_flags(b, Hotkey_Flag_RShift) ||
- has_flags(b, Hotkey_Flag_Shift));
- } else {
- return ((has_flags(a, Hotkey_Flag_LShift) == has_flags(b, Hotkey_Flag_LShift)) &&
- (has_flags(a, Hotkey_Flag_RShift) == has_flags(b, Hotkey_Flag_RShift)) &&
- (has_flags(a, Hotkey_Flag_Shift) == has_flags(b, Hotkey_Flag_Shift)));
- }
-}
+ Event_Mask_Alt, Event_Mask_LAlt, Event_Mask_RAlt,
+ Event_Mask_Shift, Event_Mask_LShift, Event_Mask_RShift,
+ Event_Mask_Cmd, Event_Mask_LCmd, Event_Mask_RCmd,
+ Event_Mask_Control, Event_Mask_LControl, Event_Mask_RControl,
+};
-internal bool
-compare_alt(struct hotkey *a, struct hotkey *b)
+internal uint32_t hotkey_lrmod_flag[] =
{
- if(has_flags(a, Hotkey_Flag_Alt)) {
- return (has_flags(b, Hotkey_Flag_LAlt) ||
- has_flags(b, Hotkey_Flag_RAlt) ||
- has_flags(b, Hotkey_Flag_Alt));
- } else {
- return ((has_flags(a, Hotkey_Flag_LAlt) == has_flags(b, Hotkey_Flag_LAlt)) &&
- (has_flags(a, Hotkey_Flag_RAlt) == has_flags(b, Hotkey_Flag_RAlt)) &&
- (has_flags(a, Hotkey_Flag_Alt) == has_flags(b, Hotkey_Flag_Alt)));
- }
-}
+ Hotkey_Flag_Alt, Hotkey_Flag_LAlt, Hotkey_Flag_RAlt,
+ 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,
+};
internal bool
-compare_ctrl(struct hotkey *a, struct hotkey *b)
+compare_lr_mod(struct hotkey *a, struct hotkey *b, int mod)
{
- if(has_flags(a, Hotkey_Flag_Control)) {
- return (has_flags(b, Hotkey_Flag_LControl) ||
- has_flags(b, Hotkey_Flag_RControl) ||
- has_flags(b, Hotkey_Flag_Control));
- } else {
- return ((has_flags(a, Hotkey_Flag_LControl) == has_flags(b, Hotkey_Flag_LControl)) &&
- (has_flags(a, Hotkey_Flag_RControl) == has_flags(b, Hotkey_Flag_RControl)) &&
- (has_flags(a, Hotkey_Flag_Control) == has_flags(b, Hotkey_Flag_Control)));
- }
+ bool result = has_flags(a, hotkey_lrmod_flag[mod])
+ ? has_flags(b, hotkey_lrmod_flag[mod + LMOD_OFFS]) ||
+ has_flags(b, hotkey_lrmod_flag[mod + RMOD_OFFS]) ||
+ has_flags(b, hotkey_lrmod_flag[mod])
+ : has_flags(a, hotkey_lrmod_flag[mod + LMOD_OFFS]) == has_flags(b, hotkey_lrmod_flag[mod + LMOD_OFFS]) &&
+ has_flags(a, hotkey_lrmod_flag[mod + RMOD_OFFS]) == has_flags(b, hotkey_lrmod_flag[mod + RMOD_OFFS]) &&
+ has_flags(a, hotkey_lrmod_flag[mod]) == has_flags(b, hotkey_lrmod_flag[mod]);
+ return result;
}
internal bool
@@ -92,10 +72,10 @@ compare_fn(struct hotkey *a, struct hotkey *b)
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) &&
+ return compare_lr_mod(a, b, LRMOD_ALT) &&
+ compare_lr_mod(a, b, LRMOD_CMD) &&
+ compare_lr_mod(a, b, LRMOD_CTRL) &&
+ compare_lr_mod(a, b, LRMOD_SHIFT) &&
compare_fn(a, b) &&
a->key == b->key;
}
@@ -132,43 +112,29 @@ void free_hotkeys(struct table *hotkey_map)
}
}
-void cgeventflags_to_hotkeyflags(CGEventFlags flags, struct hotkey *eventkey)
+internal void
+cgevent_lrmod_flag_to_hotkey_lrmod_flag(CGEventFlags flags, struct hotkey *eventkey, int mod)
{
- if((flags & Event_Mask_Cmd) == Event_Mask_Cmd) {
- bool left = (flags & Event_Mask_LCmd) == Event_Mask_LCmd;
- bool right = (flags & Event_Mask_RCmd) == Event_Mask_RCmd;
-
- if(left) add_flags(eventkey, Hotkey_Flag_LCmd);
- if(right) add_flags(eventkey, Hotkey_Flag_RCmd);
- if(!left && !right) add_flags(eventkey, Hotkey_Flag_Cmd);
- }
-
- if((flags & Event_Mask_Shift) == Event_Mask_Shift) {
- bool left = (flags & Event_Mask_LShift) == Event_Mask_LShift;
- bool right = (flags & Event_Mask_RShift) == Event_Mask_RShift;
-
- if(left) add_flags(eventkey, Hotkey_Flag_LShift);
- if(right) add_flags(eventkey, Hotkey_Flag_RShift);
- if(!left && !right) add_flags(eventkey, Hotkey_Flag_Shift);
- }
+ enum osx_event_mask mask = cgevent_lrmod_flag[mod];
+ enum osx_event_mask lmask = cgevent_lrmod_flag[mod + LMOD_OFFS];
+ enum osx_event_mask rmask = cgevent_lrmod_flag[mod + RMOD_OFFS];
- if((flags & Event_Mask_Alt) == Event_Mask_Alt) {
- bool left = (flags & Event_Mask_LAlt) == Event_Mask_LAlt;
- bool right = (flags & Event_Mask_RAlt) == Event_Mask_RAlt;
+ if((flags & mask) == mask) {
+ bool left = (flags & lmask) == lmask;
+ bool right = (flags & rmask) == rmask;
- if(left) add_flags(eventkey, Hotkey_Flag_LAlt);
- if(right) add_flags(eventkey, Hotkey_Flag_RAlt);
- if(!left && !right) add_flags(eventkey, Hotkey_Flag_Alt);
+ if(left) add_flags(eventkey, hotkey_lrmod_flag[mod + LMOD_OFFS]);
+ if(right) add_flags(eventkey, hotkey_lrmod_flag[mod + RMOD_OFFS]);
+ if(!left && !right) add_flags(eventkey, hotkey_lrmod_flag[mod]);
}
+}
- if((flags & Event_Mask_Control) == Event_Mask_Control) {
- bool left = (flags & Event_Mask_LControl) == Event_Mask_LControl;
- bool right = (flags & Event_Mask_RControl) == Event_Mask_RControl;
-
- if(left) add_flags(eventkey, Hotkey_Flag_LControl);
- if(right) add_flags(eventkey, Hotkey_Flag_RControl);
- if(!left && !right) add_flags(eventkey, Hotkey_Flag_Control);
- }
+void cgeventflags_to_hotkeyflags(CGEventFlags flags, struct hotkey *eventkey)
+{
+ cgevent_lrmod_flag_to_hotkey_lrmod_flag(flags, eventkey, LRMOD_ALT);
+ cgevent_lrmod_flag_to_hotkey_lrmod_flag(flags, eventkey, LRMOD_CMD);
+ cgevent_lrmod_flag_to_hotkey_lrmod_flag(flags, eventkey, LRMOD_CTRL);
+ cgevent_lrmod_flag_to_hotkey_lrmod_flag(flags, eventkey, LRMOD_SHIFT);
if((flags & Event_Mask_Fn) == Event_Mask_Fn) {
add_flags(eventkey, Hotkey_Flag_Fn);
diff --git a/src/tokenize.c b/src/tokenize.c
index 4feca6d..c1990b1 100644
--- a/src/tokenize.c
+++ b/src/tokenize.c
@@ -1,8 +1,9 @@
#include "tokenize.h"
-#define internal static
-
#include <ctype.h>
+#define internal static
+#define array_count(a) (sizeof((a)) / sizeof(*(a)))
+
int token_equals(struct token token, const char *match)
{
const char *at = match;
diff --git a/src/tokenize.h b/src/tokenize.h
index 4f87292..a6e35bd 100644
--- a/src/tokenize.h
+++ b/src/tokenize.h
@@ -1,7 +1,6 @@
#ifndef SKHD_TOKENIZE_H
#define SKHD_TOKENIZE_H
-#define array_count(a) (sizeof((a)) / sizeof(*(a)))
static const char *modifier_flags_str[] =
{
"alt", "lalt", "ralt",