aboutsummaryrefslogtreecommitdiff
path: root/src/skhd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/skhd.c')
-rw-r--r--src/skhd.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/skhd.c b/src/skhd.c
index 05e955f..ceea857 100644
--- a/src/skhd.c
+++ b/src/skhd.c
@@ -48,13 +48,14 @@ global struct event_tap event_tap;
global struct hotloader hotloader;
global struct mode *current_mode;
global struct table mode_map;
+global struct table blacklst;
global char *config_file;
internal void
parse_config_helper(char *absolutepath)
{
struct parser parser;
- if (parser_init(&parser, &mode_map, absolutepath)) {
+ if (parser_init(&parser, &mode_map, &blacklst, absolutepath)) {
parse_config(&parser);
parser_destroy(&parser);
} else {
@@ -68,6 +69,7 @@ internal HOTLOADER_CALLBACK(config_handler)
BEGIN_TIMED_BLOCK("hotload_config");
debug("skhd: config-file has been modified.. reloading config\n");
free_mode_map(&mode_map);
+ free_blacklist(&blacklst);
parse_config_helper(absolutepath);
END_TIMED_BLOCK();
}
@@ -78,6 +80,7 @@ internal CF_NOTIFICATION_CALLBACK(keymap_handler)
if (initialize_keycode_map()) {
debug("skhd: input source changed.. reloading config\n");
free_mode_map(&mode_map);
+ free_blacklist(&blacklst);
parse_config_helper(config_file);
}
END_TIMED_BLOCK();
@@ -93,6 +96,7 @@ internal EVENT_TAP_CALLBACK(key_handler)
CGEventTapEnable(event_tap->handle, 1);
} break;
case kCGEventKeyDown: {
+ if (table_find(&blacklst, carbon.process_name)) return event;
if (!current_mode) return event;
BEGIN_TIMED_BLOCK("handle_keypress");
@@ -103,6 +107,7 @@ internal EVENT_TAP_CALLBACK(key_handler)
if (result) return NULL;
} break;
case NX_SYSDEFINED: {
+ if (table_find(&blacklst, carbon.process_name)) return event;
if (!current_mode) return event;
struct hotkey eventkey;
@@ -236,7 +241,8 @@ int main(int argc, char **argv)
signal(SIGCHLD, SIG_IGN);
init_shell();
- table_init(&mode_map, 13, (table_hash_func) hash_mode, (table_compare_func) same_mode);
+ table_init(&mode_map, 13, (table_hash_func) hash_string, (table_compare_func) compare_string);
+ table_init(&blacklst, 13, (table_hash_func) hash_string, (table_compare_func) compare_string);
END_SCOPED_TIMED_BLOCK();
BEGIN_SCOPED_TIMED_BLOCK("parse_config");