-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpk.h
71 lines (57 loc) · 1.51 KB
/
pk.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifndef PK_H
#define PK_H
#include <X11/Xlib.h>
typedef struct {
double basespeed;
unsigned int dir; // Bits from enum Direction, defined later.
double mul;
double xrem, yrem; // Subunit remainders.
int xcont, ycont; // Continuing a movement?
} Movement;
typedef union {
int i;
unsigned int ui;
unsigned long ul;
double f;
const void *v;
} Arg;
typedef struct {
unsigned int mod;
KeySym keysym;
unsigned int opts;
void (*pressfunc)(const Arg *);
const Arg pressarg;
void (*releasefunc)(const Arg *);
const Arg releasearg;
} Key;
void setup();
void runeventloop();
void dieifbadbindings();
void waitforrelease(KeyCode keycode);
// xserver connection
extern Display *dpy;
extern Window root;
// Pointer and scrolling movement.
extern Movement mvptr;
extern Movement mvscroll;
extern int ismove2scroll;
extern int iskeyboardgrabbed;
extern int quitting;
// Exported for testing only:
typedef struct {
int dx, dy;
} PointerUpdate;
typedef struct {
int xevents, yevents;
unsigned int xbutton, ybutton;
} ScrollUpdate;
void startdir(Movement *m, unsigned int dir);
void stopdir(Movement *m, unsigned int dir);
PointerUpdate pointerupdate(Movement *m, int usec);
ScrollUpdate scrollupdate(Movement *m, int usec);
void sprintkeysym(char *dst, size_t len, KeySym keysym, int mods);
int strappend(char *dst, size_t dstlen, char *src);
int duplicate_bindings_exist(Key *keys, size_t len);
int modified_key_with_release_func_exists(Key *keys, size_t len);
int modified_ungrabbed_keys_exist(Key *keys, size_t len);
#endif