Blame


1 e573cb09 2020-09-27 op /*
2 e573cb09 2020-09-27 op * Copyright (c) 2020 Omar Polo <op@omarpolo.com>
3 e573cb09 2020-09-27 op *
4 e573cb09 2020-09-27 op * Permission to use, copy, modify, and distribute this software for any
5 e573cb09 2020-09-27 op * purpose with or without fee is hereby granted, provided that the above
6 e573cb09 2020-09-27 op * copyright notice and this permission notice appear in all copies.
7 e573cb09 2020-09-27 op *
8 e573cb09 2020-09-27 op * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 e573cb09 2020-09-27 op * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 e573cb09 2020-09-27 op * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 e573cb09 2020-09-27 op * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 e573cb09 2020-09-27 op * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 e573cb09 2020-09-27 op * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 e573cb09 2020-09-27 op * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 e573cb09 2020-09-27 op */
16 e573cb09 2020-09-27 op
17 e573cb09 2020-09-27 op #ifndef STAR_PLATINUM_H
18 e573cb09 2020-09-27 op #define STAR_PLATINUM_H
19 e573cb09 2020-09-27 op
20 e573cb09 2020-09-27 op /* XXX: why I need to define this to get XK_space/...?
21 e573cb09 2020-09-27 op * is this a bad idea? there is another way? */
22 e573cb09 2020-09-27 op #define XK_LATIN1
23 e573cb09 2020-09-27 op #define XK_MISCELLANY
24 e573cb09 2020-09-27 op
25 e573cb09 2020-09-27 op #include <X11/Xlib.h>
26 e573cb09 2020-09-27 op
27 e573cb09 2020-09-27 op #include <err.h>
28 e573cb09 2020-09-27 op #include <stdlib.h>
29 e573cb09 2020-09-27 op
30 13cc0916 2020-09-30 op void yyerror(const char*, ...);
31 13cc0916 2020-09-30 op
32 e573cb09 2020-09-27 op struct key {
33 e573cb09 2020-09-27 op unsigned int modifier;
34 e573cb09 2020-09-27 op KeySym key;
35 e573cb09 2020-09-27 op };
36 e573cb09 2020-09-27 op
37 e573cb09 2020-09-27 op struct action {
38 e573cb09 2020-09-27 op #define ASPECIAL 1
39 e573cb09 2020-09-27 op #define AFAKE 2
40 e0041ee5 2020-10-01 op #define AEXEC 3
41 e573cb09 2020-09-27 op int type;
42 e573cb09 2020-09-27 op union {
43 e0041ee5 2020-10-01 op #define ATOGGLE 1
44 e0041ee5 2020-10-01 op #define AACTIVATE 2
45 e0041ee5 2020-10-01 op #define ADEACTIVATE 3
46 e0041ee5 2020-10-01 op #define AIGNORE 4
47 e573cb09 2020-09-27 op int special;
48 e573cb09 2020-09-27 op struct key send_key;
49 e0041ee5 2020-10-01 op char *str;
50 e573cb09 2020-09-27 op };
51 e573cb09 2020-09-27 op };
52 e573cb09 2020-09-27 op
53 e573cb09 2020-09-27 op void do_action(struct action, Window, int);
54 e0041ee5 2020-10-01 op void free_action(struct action);
55 e573cb09 2020-09-27 op
56 e573cb09 2020-09-27 op struct match {
57 9f53ba9b 2020-09-29 op #define MANY 1
58 9f53ba9b 2020-09-29 op #define MCLASS 2
59 e573cb09 2020-09-27 op int prop;
60 e573cb09 2020-09-27 op char *str;
61 e573cb09 2020-09-27 op struct match *next;
62 e573cb09 2020-09-27 op };
63 e573cb09 2020-09-27 op
64 e573cb09 2020-09-27 op struct match *new_match(int, char*);
65 e573cb09 2020-09-27 op void recfree_match(struct match*);
66 e573cb09 2020-09-27 op int match_window(struct match*, Window);
67 e573cb09 2020-09-27 op
68 e573cb09 2020-09-27 op struct rule {
69 e573cb09 2020-09-27 op struct key key;
70 e573cb09 2020-09-27 op struct action action;
71 e573cb09 2020-09-27 op struct rule *next;
72 e573cb09 2020-09-27 op };
73 e573cb09 2020-09-27 op
74 e573cb09 2020-09-27 op struct rule *new_rule(struct key, struct action);
75 e573cb09 2020-09-27 op void recfree_rule(struct rule*);
76 e573cb09 2020-09-27 op int rule_matched(struct rule*, struct key);
77 e573cb09 2020-09-27 op
78 e573cb09 2020-09-27 op struct group {
79 e573cb09 2020-09-27 op struct match *matches;
80 e573cb09 2020-09-27 op struct rule *rules;
81 e573cb09 2020-09-27 op struct group *next;
82 e573cb09 2020-09-27 op };
83 e573cb09 2020-09-27 op
84 e573cb09 2020-09-27 op extern struct group *config;
85 e573cb09 2020-09-27 op
86 e573cb09 2020-09-27 op struct group *new_group(struct match*, struct rule*);
87 e573cb09 2020-09-27 op void recfree_group(struct group*);
88 e573cb09 2020-09-27 op void process_event(struct group*, XKeyEvent*);
89 e573cb09 2020-09-27 op int group_match(struct group*, Window);
90 e573cb09 2020-09-27 op
91 e573cb09 2020-09-27 op /* xlib-related */
92 fe0dcf4e 2020-09-29 op int error_handler(Display*, XErrorEvent*);
93 e573cb09 2020-09-27 op void grabkey(struct key);
94 e573cb09 2020-09-27 op KeySym keycode_to_keysym(unsigned int);
95 e573cb09 2020-09-27 op Window focused_window();
96 e573cb09 2020-09-27 op void send_fake(Window, struct key, int);
97 e573cb09 2020-09-27 op int window_match_class(Window, const char*);
98 e573cb09 2020-09-27 op
99 e573cb09 2020-09-27 op /* debugging */
100 e573cb09 2020-09-27 op void printkey(struct key);
101 e573cb09 2020-09-27 op void printaction(struct action);
102 e573cb09 2020-09-27 op void printmatch(struct match*);
103 e573cb09 2020-09-27 op void printrule(struct rule*);
104 e573cb09 2020-09-27 op void printgroup(struct group*);
105 e573cb09 2020-09-27 op
106 e573cb09 2020-09-27 op #endif /* STAR_PLATINUM_H */