move keymap_get_one_sym_by_level() to util.c

This commit is contained in:
Andrea Chiavazza 2025-06-10 00:49:22 +01:00
parent 347df7f0dd
commit 6b75028a88
3 changed files with 13 additions and 11 deletions

11
dwl.c
View File

@ -294,8 +294,6 @@ static void handlesig(int signo);
static void incnmaster(const Arg *arg); static void incnmaster(const Arg *arg);
static void inputdevice(struct wl_listener *listener, void *data); static void inputdevice(struct wl_listener *listener, void *data);
static int keybinding(uint32_t mods, xkb_keysym_t sym); static int keybinding(uint32_t mods, xkb_keysym_t sym);
static xkb_keysym_t keymap_get_one_sym_by_level(struct xkb_keymap *keymap,
xkb_keycode_t key, xkb_layout_index_t layout, xkb_level_index_t level);
static void keypress(struct wl_listener *listener, void *data); static void keypress(struct wl_listener *listener, void *data);
static void keypressmod(struct wl_listener *listener, void *data); static void keypressmod(struct wl_listener *listener, void *data);
static int keyrepeat(void *data); static int keyrepeat(void *data);
@ -1575,15 +1573,6 @@ keybinding(uint32_t mods, xkb_keysym_t sym)
return 0; return 0;
} }
xkb_keysym_t
keymap_get_one_sym_by_level(struct xkb_keymap *keymap, xkb_keycode_t key,
xkb_layout_index_t layout, xkb_level_index_t level)
{
const xkb_keysym_t *syms;
int count = xkb_keymap_key_get_syms_by_level(keymap, key, layout, level, &syms);
return count > 0 ? syms[0] : XKB_KEY_NoSymbol;
}
void void
keypress(struct wl_listener *listener, void *data) keypress(struct wl_listener *listener, void *data)
{ {

9
util.c
View File

@ -49,3 +49,12 @@ fd_set_nonblock(int fd) {
return 0; return 0;
} }
xkb_keysym_t
keymap_get_one_sym_by_level(struct xkb_keymap *keymap, xkb_keycode_t key,
xkb_layout_index_t layout, xkb_level_index_t level)
{
const xkb_keysym_t *syms;
int count = xkb_keymap_key_get_syms_by_level(keymap, key, layout, level, &syms);
return count > 0 ? syms[0] : XKB_KEY_NoSymbol;
}

4
util.h
View File

@ -1,5 +1,9 @@
/* See LICENSE.dwm file for copyright and license details. */ /* See LICENSE.dwm file for copyright and license details. */
#include <xkbcommon/xkbcommon.h>
void die(const char *fmt, ...); void die(const char *fmt, ...);
void *ecalloc(size_t nmemb, size_t size); void *ecalloc(size_t nmemb, size_t size);
int fd_set_nonblock(int fd); int fd_set_nonblock(int fd);
xkb_keysym_t keymap_get_one_sym_by_level(struct xkb_keymap *keymap,
xkb_keycode_t key, xkb_layout_index_t layout, xkb_level_index_t level);