File: keybind.h

package info (click to toggle)
labwc 0.9.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,980 kB
  • sloc: ansic: 34,416; perl: 5,836; xml: 875; sh: 162; python: 131; makefile: 12
file content (49 lines) | stat: -rw-r--r-- 1,313 bytes parent folder | download
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
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef LABWC_KEYBIND_H
#define LABWC_KEYBIND_H

#include <stdbool.h>
#include <wayland-util.h>
#include <xkbcommon/xkbcommon.h>

#define MAX_KEYSYMS 32
#define MAX_KEYCODES 16

struct server;

struct keybind {
	uint32_t modifiers;
	xkb_keysym_t *keysyms;
	size_t keysyms_len;
	bool use_syms_only;
	xkb_keycode_t keycodes[MAX_KEYCODES];
	size_t keycodes_len;
	int keycodes_layout;
	bool allow_when_locked;
	struct wl_list actions;  /* struct action.link */
	struct wl_list link;     /* struct rcxml.keybinds */
	bool on_release;
};

/**
 * keybind_create - parse keybind and add to linked list
 * @keybind: key combination
 */
struct keybind *keybind_create(const char *keybind);

void keybind_destroy(struct keybind *keybind);

/**
 * parse_modifier - parse a string containing a single modifier name (e.g. "S")
 * into the represented modifier value. returns 0 for invalid modifier names.
 * @symname: modifier name
 */
uint32_t parse_modifier(const char *symname);

bool keybind_the_same(struct keybind *a, struct keybind *b);

bool keybind_contains_keycode(struct keybind *keybind, xkb_keycode_t keycode);
bool keybind_contains_keysym(struct keybind *keybind, xkb_keysym_t keysym);

void keybind_update_keycodes(struct server *server);
#endif /* LABWC_KEYBIND_H */