summaryrefslogtreecommitdiff
path: root/src/key.h
blob: 7c2dc0cb41e7b9c78d37e41b30a67c4cc426d687 (plain)
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
/** Copyright 2011-2013 Thorsten Wißmann. All rights reserved.
 *
 * This software is licensed under the "Simplified BSD License".
 * See LICENSE for details */

#ifndef __HERBST_KEY_H_
#define __HERBST_KEY_H_

#include <stdbool.h>
#include <X11/Xlib.h>
#include "glib-backports.h"
#include "clientlist.h"

#define KEY_COMBI_SEPARATORS "+-"

typedef struct KeyBinding {
    KeySym keysym;
    unsigned int modifiers;
    int     cmd_argc; // number of arguments for command
    char**  cmd_argv; // arguments for command to call
    bool    enabled;  // Is the keybinding already grabbed
} KeyBinding;

unsigned int modifiername2mask(const char* name);
const char* modifiermask2name(unsigned int mask);

bool string2modifiers(char* string, unsigned int* modmask);
bool string2key(char* string, unsigned int* modmask, KeySym* keysym);
int keybind(int argc, char** argv, GString* output);
int keyunbind(int argc, char** argv, GString* output); //removes a keybinding
void keybinding_free(KeyBinding* binding);

int key_list_binds(int argc, char** argv, GString* output);
int list_keysyms(int argc, char** argv, GString* output);
bool key_remove_bind_with_keysym(unsigned int modifiers, KeySym sym);
void key_remove_all_binds();
GString* keybinding_to_g_string(KeyBinding* binding);
void key_find_binds(const char* needle, GString* output);
void complete_against_modifiers(const char* needle, char seperator,
                                char* prefix, GString* output);
void complete_against_keysyms(const char* needle, char* prefix, GString* output);
void regrab_keys();
void grab_keybind(KeyBinding* binding, void* useless_pointer);
void update_numlockmask();
unsigned int* get_numlockmask_ptr();
void key_set_keymask(HSTag * tag, HSClient *client);
void handle_key_press(XEvent* ev);

void key_init();
void key_destroy();

#endif